У меня есть приложение test rails 5.2.2, работающее в докере, и оно не сообщает об ошибках в консоли, но когда я запускаю docker-compose stop
есть 1 контейнер, который не останавливается. Моя операционная система - это macos с Docker для Mac. Контейнер, который не останавливается, - это db_data.
docker-compose up
перезапустит остановленный контейнер, и приложение продолжит нормально работать.
Вот мой файл для создания докеров
version: '3'
services:
postgres:
image: postgres
env_file:
- '.env'
environment:
- PGDATA=/var/lib/postgresql/data
db_data:
image: postgres
volumes:
- /var/lib/postgresql/data
command: /bin/true
redis:
image: redis
ports:
- "6379:6379"
web:
build: .
command: "bin/bundle exec rails s -p 3000 -b 0.0.0.0"
depends_on:
- redis
- postgres
env_file:
- '.env'
environment:
- RAILS_ENV=development
- REDIS_URL=redis
- REDIS_PORT=6379
volumes:
- .:/usr/src/app
- gem_cache:/gems
ports:
- "3000:3000"
environment:
- WEBPACKER_DEV_SERVER_HOST=webpack_dev_server
webpack_dev_server:
build: .
command: ./bin/webpack-dev-server
ports:
- "3035:3035"
env_file:
- '.env'
environment:
- RAILS_ENV=development
- REDIS_URL=redis
- REDIS_PORT=6379
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
volumes:
- .:/usr/src/app
- gem_cache:/gems
volumes:
gem_cache:
Вы, наверное, уже поняли это, но ваш db_data
служба выполняет команду /bin/true
. Если вы посмотрите на точку входа в Dockerfile это для docker-entrypoint.sh
. Внутри этого скрипта есть строка if [ "$1" = 'postgres' ]; then ...
, поэтому, когда вы проходите /bin/true
в качестве команды этот блок пропускается (некоторый сценарий инициализации), и контейнер немедленно закрывается.
Вы не видите имя контейнера при запуске docker-compose stop
потому что он, вероятно, не работал.