问题描述
按照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:
<<: *backend
command: ["/bin/bash"]
ports:
- '3000:3000'
- '3002:3002'
stdin_open: true
tty: true