Адрес базы в Docker
Адрес базы собирают
из имени сервиса,
порта 5432,
имени базы и пользователя.
Соседи обращаются к db
на этом порту,
где слушает PostgreSQL.
Контейнер приложения
читает части адреса
из окружения
и пока лишь печатает,
без открытия соединения
драйвером.
Сервис db
на postgres:18
с паролем demo,
базой db
и пользователем app.
Сервис app
на python:3.14
получает переменные
и коротко выводит
имя хоста и порт
в консоль:
services:
db:
image: postgres:18
environment:
POSTGRES_PASSWORD: demo
POSTGRES_DB: db
POSTGRES_USER: app
app:
image: python:3.14
environment:
DB_HOST: db
DB_PORT: "5432"
DB_NAME: db
DB_USER: app
DB_PASSWORD: demo
command: ["python", "-c", "import os; print(os.environ['DB_HOST'], os.environ['DB_PORT'], os.environ['DB_NAME'], os.environ['DB_USER'])"]
Значение db
- это имя сервиса
в сети Compose,
а порт 5432
зададут в коде
при подключении.
Пакет psycopg
для такой проверки
не обязателен.
Поднимем проект
в фоне:
docker compose up -d
Части адреса читают
в логах сервиса app:
docker compose logs app
Задайте сервису note переменные хоста data, порта 5432, базы db и пользователя app с коротким выводом этих значений в консоль на python:3.14.
Поднимите проект в фоне и зафиксируйте напечатанные части адреса в логах note.