Хорошо, я постараюсь ответить на это:
Обычно, когда появляется эта ошибка, это, вероятно, означает, что запуск контейнера db
возвратил некоторые ошибки и остановился.
У меня была такая же проблема, и после некоторого копания я обнаружил, что у меня
LANG='en_US.UTF-8'
LANGUAGE='en_US:en'
LC_ALL='en_US.UTF-8'
установлен в моей переменной окружения, и это привело к остановке контейнера db
. Поэтому, поскольку контейнер не работал, у меня не было db
хоста.
Вот как выглядит мой docker-compose.yml
файл:
version: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
env_file: .env
app:
build: .
command: bundle exec puma -p 3000 -C config/puma.rb
env_file: .env
volumes:
- .:/app
ports:
- "3031:3000"
depends_on:
- db
Вот config/database.yml
default: &default
adapter: postgresql
encoding: unicode
host: db
pool: 5
username: <%= ENV['POSTGRES_USER'] %>
password: <%= ENV['POSTGRES_PASSWORD'] %>
development:
<<: *default
database: driggl_dev
test:
<<: *default
database: driggl_test
production:
<<: *default
database: driggl_prod
... и файл .env
для разработки:
POSTGRES_USER=driggl
POSTGRES_PASSWORD=driggl
Поскольку у меня были общие тома для данных базы данных, я просто удалил папку tmp/db
из репозитория, чтобы быть уверенным.
rm -rf tmp/*
затем я удалил все контейнеры и изображения
docker rm $(docker ps -q -a) -f
docker rmi $(docker images -q) -f
Наконец я снова раскручиваю контейнеры:
docker-compose up --build
и все наконец пошло правильно.
Резюме
- Убедитесь, что в системе ничего не кэшировано
- Убедитесь, что ваш контейнер БД не возвращает ошибок при запуске.
Надеюсь, это поможет любому, кто столкнется с этой проблемой.