【问题标题】:docker-compose won't open /bin/bashdocker-compose 不会打开 /bin/bash
【发布时间】:2020-08-12 10:48:32
【问题描述】:

我已经按照evilmartians 的教程为 Rails 设置了一个 docker-compose 文件,就像这样。

version: '3.4'

services:
  app: &app
    build:
      context: .
      dockerfile: ./.dockerdev/Dockerfile
      args:
        RUBY_VERSION: '2.6.5'
        MYSQL_MAJOR: '14'
        NODE_MAJOR: '11'
        YARN_VERSION: '1.16.0'
        BUNDLER_VERSION: '2.1.4'
    image: myapp-dev:1.2.0
    tmpfs:
        - /tmp

  backend: &backend
    <<: *app
    stdin_open: true
    tty: true
    volumes: 
      - .:/app:cached
      - rails_cache:/app/tmp/cache
      - bundle:/bundle
      - node_modules:/app/node_modules
      - packs:/app/public/packs
    environment:
      - NODE_ENV=development
      - RAILS_ENV=${RAILS_ENV:-development}
      - DB_USERNAME=root
      - DB_DATABASE=myapp_development
      - DB_PORT=3306
      - DB_HOST=mysql
      - REDIS_URL=redis://redis:6379/
      - BOOTSNAP_CACHE_DIR=/usr/local/bundle/_bootsnap
      - WEBPACKER_DEV_SERVER_HOST=webpacker
      - WEB_CONCURRENCY=1
      - HISTFILE=/app/log/.bash_history
      - EDITOR=vi
    depends_on:
      - mysql
      - redis
      - dynamodb
      - webpacker

  runner:
    <<: *backend
    command: ["/bin/bash"]
    ports:
      - '3000:3000'
      - '3002:3002'

  rails:
    <<: *backend
    command: ["./.dockerdev/scripts/start_rails.sh"]
    ports:
      - '3000:3000'

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USERNAME: root
      MYSQL_PASSWORD: root
    ports:
      - '3306:3306'

  redis:
    image: redis:3.2-alpine
    volumes:
      - redis:/data
    ports:
      - 6379

  webpacker:
    <<: *app
    command: ["./.dockerdev/scripts/start_webpack_dev.sh"]
    ports:
      - '3035:3035'
    volumes:
      - .:/app:cached
      - bundle:/bundle
      - node_modules:/app/node_modules
      - packs:/app/public/packs
    environment:
      - NODE_ENV=${NODE_ENV:-development}
      - RAILS_ENV=${RAILS_ENV:-development}
      - WEBPACKER_DEV_SERVER_HOST=0.0.0.0

  dynamodb:
    image: amazon/dynamodb-local
    ports:
      - "8000:8000"

volumes:
  mysql:
  redis:
  bundle:
  node_modules:
  rails_cache:
  packs:

但是,当我运行docker-compose up runner 时,它总是卡在Attaching to myapp_runner_1

当我使用 docker exec -it myapp_runner_1 /bin/bash 从另一个 bash 窗口/选项卡进入容器并运行 ps -Al 时,我可以看到有另一个 bash 进程正在运行。只是我似乎无法在原始窗口/选项卡中运行任何东西。

是不是我做错了什么?

【问题讨论】:

  • runner 容器应该做什么?你如何与之互动?它需要是一个永远在线的长期运行的过程吗? (docker-compose run backend bash 可以在不寻常的情况下为您提供一个临时容器,您确实需要一个交互式 shell 来调试您的容器设置。)
  • 根据文章,它与您提到的没有太大区别,只是它在不同的容器中。我知道我可以运行您提到的命令,我只是想知道为什么我卡在Attaching to ... 以及如何解决它。
  • 您应该可以删除该块而不会产生不良影响。

标签: ruby-on-rails docker docker-compose


【解决方案1】:

也许这可能会有所帮助:

  runner:
    <<: *backend
    command: ["/bin/bash"]
    ports:
      - '3000:3000'
      - '3002:3002'
    stdin_open: true
    tty: true

【讨论】:

  • 由于backend 本身已经包含stdin_opentty 属性,它并没有真正的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-01
  • 2020-03-03
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
相关资源
最近更新 更多