Docker Postgresql Django Error - django.db.utils.OperationalError: could not translate host name "db" to address: Временный сбой в разрешении имен
Я пытался развернуть приложение docker django postgresql.
docker-compose.prod.yml
...
services:
web:
build:
context: .
dockerfile: Dockerfile.prod
restart: always
container_name: web
command: gunicorn django_app.wsgi:application --bind 0.0.0.0:80
volumes:
- static_volume:/static
- media_volume:/media
expose:
- 80
env_file:
- ./.env.prod
depends_on:
- db
db:
image: postgres:13.4-alpine
container_name: db
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- ./.env.db
...
.env.db
POSTGRES_USER=user1
POSTGRES_PASSWORD=password1
POSTGRES_DB=prod_db
.env.prod
...
SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=prod_db
SQL_USER=user1
SQL_PASSWORD=password1
SQL_HOST=db
SQL_PORT=5432
DATABASE=postgres
...
settings.py
...
DATABASES = {
'default': {
"ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.sqlite3"),
"NAME": os.environ.get("SQL_DATABASE", os.path.join(BASE_DIR, "db.sqlite3")),
"USER": os.environ.get("SQL_USER", "user"),
"PASSWORD": os.environ.get("SQL_PASSWORD", "password"),
"HOST": os.environ.get("SQL_HOST", "localhost"),
"PORT": os.environ.get("SQL_PORT", "5432")
}
}
...
Полное сообщение об ошибке
web | File "/usr/local/lib/python3.8/site-packages/psycopg2/__init__.py", line 122, in connect
web | conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
web | django.db.utils.OperationalError: could not translate host name "db" to address: Temporary failure in name resolution
Попытки решения:
- тестирование с различными версиями образа postgresql.
- установка POSTGRES_HOST_AUTH_METHOD на пароль и доверие без успеха.
- многократно меняя пароль и имя пользователя .
- изменение имени базы данных
- добавление 'restart: always' к 'web' в docker-compose
Есть ли у вас идеи, что требуется для устранения этой ошибки? Если вам нужна более подробная информация о моей кодовой базе docker для решения этой проблемы, пожалуйста, дайте мне знать.
Спасибо