Docker Compose override: разделить dev и production настройки

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

Разделите общие сервисы и локальные настройки по нескольким Compose-файлам. Второй файл меняет или дополняет базовый, а config показывает итог перед запуском. ????? ??????????? ?????????? ???????? ?????? ??????? ? ????????? ?????? ? ??????? ?????.

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

YAML
# compose.yaml
services:
  web:
    image: example/web:1.0
    ports: [\"8080:80\"]

# compose.dev.yaml
services:
  web:
    build: .
    volumes:
      - ./src:/app/src
    command: npm run dev

# Сначала проверьте объединённый результат:
docker compose -f compose.yaml -f compose.dev.yaml config

Файлы применяются слева направо: поздний override меняет совпадающие поля. Списки ports и volumes объединяются по своим правилам, поэтому перед up просмотрите config.

Частый вопрос

Нужно ли вручную указать override?

Compose автоматически подхватывает compose.override.yaml в каталоге проекта. Для точного контроля перечислите каждый файл через -f в нужном порядке.