Docker Compose DNS: обращаться к сервису по имени

Категория: docker · Язык: YAML · Обновлено:

В Docker Compose сервисы находят друг друга через внутренний DNS по имени сервиса. Приложение api подключается к db:5432, даже если IP базы поменялся после пересоздания контейнера. ????? ??????????? ?????????? ???????? ?????? ??????? ? ????????? ?????? ? ??????? ?????.

Рабочий пример

YAML
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 часто мешает запуску нескольких экземпляров.