Не могу подключаться к PosgreSQL в Docker контейнере через python
Всем привет. Мне необходимо разобраться с стеком Flask, PosgreSQL и Docker, а конкретно, как подключится к docker контейнеру из своего кода.
У меня есть 2 файла:
docker-compose.yml
services:
db:
image: postgres:13-alpine
volumes:
- ./pg_db:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=az_user
- POSTGRES_PASSWORD=az_psw
- POSTGRES_DB=az_dbname
pgadmin:
image: dpage/pgadmin4
depends_on:
- db
environment:
- PGADMIN_DEFAULT_EMAIL=root@azzrael.ru
- PGADMIN_DEFAULT_PASSWORD=azzrael_code_yt
- PGADMIN_LISTEN_ADDRESS=0.0.0.0
- PGADMIN_LISTEN_PORT=5555
main.py
import psycopg2
conn = psycopg2.connect("postgresql://az_user:az_psw@db:5432/az_dbname")
print("Great!")
conn.close()
Сначала я выполняю команду docker-compose up -d
- все успешно билдится и запускается. Могу зайти по 5555 порту и проверить в панели pgAdmin, но проблемы начинаются, когда я пытаюсь запустить мой python код. Запускаю я его отдельно от docker-compose.yml командой в консоли python main.py
, код крашится с ошибкой psycopg2.OperationalError: could not translate host name "db" to address: Unknown host
Эта проблема очень распатронена, но четкого ответа я не нашел. Я добавлял в services->db следующую строку POSTGRES_HOST_AUTH_METHOD=trust
, добавлял container_name: db
, менял host на localhost - все безуспешно.
Буду благодарен за любую помощь, так как второй день бьюсь с этой проблемой.