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