Docker Compose v2 Profiles: включаем сервисы только для dev или prod

Сниппет показывает, как с помощью profiles: запускать разные наборы контейнеров (dev, debug) одной командой. Без отдельных YAML-файлов.


**Почему это удобно**
Параметр **profiles** позволяет держать один-единственный docker-compose.yml, переключаясь между окружениями флагом --profile. Не нужно поддерживать docker-compose.dev.yml, docker-compose.debug.yml и т.д., а CI может запускать только нужные сервисы, экономя ресурсы.
#### docker-compose.yml ####
services:
  app:
    build: .
    profiles: ["dev", "prod"]       # общий сервис
    environment:
      - ENV=production

  postgres:
    image: postgres:16
    profiles: ["dev"]

  jaeger:
    image: jaegertracing/all-in-one:1.55
    ports: ["16686:16686"]
    profiles: ["debug"]             # запускается только при отладке



#### ПРИМЕРЫ ЗАПУСКА  ####

# Поднять минимальный прод-набор
docker compose --profile prod up -d

# Локальная разработка с БД
docker compose --profile dev up -d

# Отладка с трассировкой
docker compose --profile dev --profile debug up