Docker Compose DNS: обращаться к сервису по имени
В Docker Compose сервисы находят друг друга через внутренний DNS по имени сервиса. Приложение api подключается к db:5432, даже если IP базы поменялся после пересоздания контейнера. ????? ??????????? ?????????? ???????? ?????? ??????? ? ????????? ?????? ? ??????? ?????.
Рабочий пример
services:
api:
build: .
environment:
DATABASE_HOST: db
DATABASE_PORT: \"5432\"
db:
image: postgres:16
expose:
- \"5432\"Сервисы Compose подключены к общей сети автоматически. Внутри сети используется container port; ports публикует порт на хост для локальных клиентов.
Частый вопрос
Нужен ли container_name для DNS?
Нет. Имя сервиса — стабильный DNS alias и поддерживает масштабирование; container_name часто мешает запуску нескольких экземпляров.