Django не может подключиться к запущенному докер-контейнеру postgres
Я удивлен, что не могу заставить это работать, поскольку я запускал приложения django с БД postgres в контейнерах docker несколько раз, однако в этот раз на моей машине Linux приложение django не может подключиться к контейнеру postgres docker, тогда как на моем Mac эта установка работает без проблем.
Я получаю стандартную ошибку:
django.db.utils.OperationalError: не удалось подключиться к серверу: Host is unreachable Работает ли сервер на хосте "postgresdb" (172.27.0.2) и принимает ли он TCPIP соединения на порт 5432? TCP/IP соединения на порт 5432?
Контейнер postgres запущен и должен быть доступен. Я проверяю IP-адрес контейнера docker, и он кажется правильным. Мой файл docker-compose выглядит следующим образом:
version: "3.8"
services:
app:
container_name: data-management
restart: always
build: ./
ports:
- '3000:3000'
links:
- 'postgresdb'
volumes:
- ./:/usr/local/share/src/app
env_file:
- .dev.env
postgresdb:
container_name: be-postgres
restart: always
image: postgres:13.4-alpine
ports:
- '5432:5432'
volumes:
- postgres-db:/var/lib/postgresql/data
env_file:
- .dev.env
volumes:
postgres-db:
Конфигурации хранятся в файле окружения, который используется в обоих контейнерах, чтобы избежать любых несоответствий.
POSTGRES_PASSWORD=devpassword123
POSTGRES_USER=devuser
POSTGRES_SERVICE=postgresdb
POSTGRES_PORT=5432
POSTGRES_DB=data_management
Настройки django DB настолько стандартны, насколько это возможно:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'HOST': os.environ['POSTGRES_SERVICE'],
'NAME': os.environ['POSTGRES_DB'],
'PORT': os.environ['POSTGRES_PORT'],
'USER': os.environ['POSTGRES_USER'],
'PASSWORD': os.environ['POSTGRES_PASSWORD'],
}
}
У меня нет идей, что может быть причиной этого, так как это происходит только на моей машине Fedora и нет никаких проблем при запуске на моем Mac. В прошлом у меня уже были проблемы с SELinux с некоторыми томами docker, однако, погуглив, я не смог найти никаких предположений о том, что SELinux может быть виновником снова.