Создает ли Docker Compose сеть по умолчанию для сервисов

Ответ

Да, по умолчанию Docker Compose создает единую сеть типа bridge для всех сервисов, определенных в файле docker-compose.yml.

Это ключевая особенность, которая обеспечивает автоматическое обнаружение сервисов (service discovery).

  • Имя сети: Генерируется автоматически по шаблону <имя_директории>_default.
  • Взаимодействие: Все контейнеры в этой сети могут обращаться друг к другу по имени сервиса, которое Docker Compose использует как DNS-имя (hostname).

Пример (docker-compose.yml):

version: '3.8'
services:
  api:
    image: my-api-image
    # API сможет подключиться к базе данных по адресу 'postgres-db:5432'
    environment:
      - DATABASE_URL=postgresql://user:password@postgres-db:5432/mydatabase

  postgres-db:
    image: postgres:13
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=mydatabase

В этом примере сервис api найдет сервис postgres-db по его имени postgres-db без необходимости знать IP-адрес контейнера.