Из каких основных секций состоит файл docker-compose.yml?

«Из каких основных секций состоит файл docker-compose.yml?» — вопрос из категории Devops, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Файл docker-compose.yml использует формат YAML и описывает многоконтейнерное приложение. Его структура состоит из нескольких ключевых секций верхнего уровня.

Основные секции:

  • version (устарело в новых версиях): Ранее указывала версию схемы файла. Сейчас Compose V2 интегрирован в Docker CLI и это поле необязательно.
  • services: Самая важная секция, где описывается каждый контейнер (сервис) приложения. Для каждого сервиса указываются его параметры.
  • networks: Определяет сети, которые будут использоваться сервисами для взаимодействия друг с другом.
  • volumes: Позволяет создавать именованные тома (volumes) для постоянного хранения данных.

Пример структуры:

# Версия опциональна в современных версиях Docker Compose
# version: '3.9'

services: # Описание контейнеров
  backend:
    build: ./backend # Инструкция по сборке образа
    ports:
      - "8000:8000"
    volumes:
      - db_data:/var/lib/postgresql/data
    networks:
      - app-net

  frontend:
    image: nginx:1.21-alpine # Использование готового образа
    ports:
      - "80:80"
    networks:
      - app-net

volumes: # Определение именованного тома
  db_data:

networks: # Определение сети
  app-net:
    driver: bridge

Внутри секции services для каждого сервиса могут быть определены такие параметры, как image, build, ports, environment, volumes, depends_on и другие.