Профили Compose
Тема дорожной карты · Docker & Containers
Профили в docker-compose позволяют пометить сервисы в файле compose.yaml, чтобы они запускались только при активации соответствующего профиля. Это особенно полезно для управления различными конфигурациями, такими как отладка (debug), тестирование (test), или рабочие (prod) сценарии. Пример использования профилей: docker compose --profile debug up. Такое разделение помогает избежать запуска дополнительных сервисов, которые могут быть нужны только в определенных условиях, например, mailcatcher, профайлер или задания для заполнения данных.
Как это работает
Профили Compose — это YAML-формат и CLI для описания multi-container приложений как кода. Файл compose.yml перечисляет сервисы, сети, томы и их связи. Команда docker compose up поднимает весь стек, а docker compose down гасит его. Compose создаёт изолированную сеть для каждого проекта, что позволяет сервисам находить друг друга по имени. Поддерживается переопределение параметров через файл .env и использование переменных вида ${VAR}.
Профили (profiles: [dev]) позволяют включать или выключать опциональные сервисы. Это означает, что вы можете создать несколько конфигураций для одного и того же приложения, используя различные профили. Например, вы можете иметь профиль dev, который включает отладочные сервисы, и профиль prod, который не содержит их.
Когда применять
Compose идеально подходит для разработки, маленьких single-host production-деплоев, и интеграционных тестов в CI/CD. Однако, для управления многими хостами и более сложными оркестрациями, следует использовать Kubernetes, Nomad или Docker Swarm.
Секреты и чувствительные данные не следует хранить в compose.yml. Вместо этого используйте файл .env, который может быть подключен через параметр env_file: или Docker secrets. В production-среде важно закреплять теги образов по digest, чтобы избежать неопределенности при запуске. Использование плавающего :latest делает вопрос "что запущено?" безответным, так как версия образа может измениться без предупреждения.
Типичные ошибки
Типичные ловушки при работе с профилями Compose включают в себя путаницу между версиями docker-compose (отдельная Python-утилита, которую уже не поддерживают) и docker compose (Go-плагин, который является актуальным). Также важно не коммитить файл .env в Git, так как он может содержать чувствительные данные.
Команда depends_on: ждет старта контейнера, но не гарантирует его готовности к работе. Для проверки готовности сервиса рекомендуется использовать healthcheck: с условием condition: service_healthy. Еще одной распространенной ошибкой является забывание переименовать named volumes при переименовании проекта, так как имя volume включает имя проекта.