Сервисы, depends-on & restart

Тема дорожной карты · Docker & Containers

Блок services: в файле docker-compose.yml описывает каждый контейнер, который будет запущен в рамках вашего приложения. Функциональность depends_on позволяет вам управлять порядком запуска контейнеров, гарантируя, что один контейнер будет запущен только после успешного запуска его зависимостей. Параметр restart: (no, on-failure, always, unless-stopped) определяет, как контейнер должен действовать при сбое. Это важные элементы для управления жизненным циклом контейнеров и обеспечения их стабильной работы. В частности, restart: "unless-stopped" полезен для прод-подобных сред, где контейнеры должны перезапускаться после сбоев, в то время как restart: "no" может быть использовано для одноразовых задач, таких как интеграционные тесты, чтобы избежать накопления логов.

Как это работает

Сервисы, depends_on и параметр restart: являются ключевыми элементами в файле конфигурации docker-compose.yml. Этот файл описывает multi-container приложения как код, используя YAML-синтаксис. Внутри конфигурации вы перечисляете сервисы, сети, томы и их взаимосвязи. Команда docker compose up поднимает весь стек контейнеров, а команда docker compose down гасит его. Docker Compose создаёт изолированную сеть для каждого проекта, что позволяет сервисам находить друг друга по имени. Он также поддерживает переопределение конфигурации через файл .env и использование переменных окружения с помощью ${VAR}.

Когда применять

Docker Compose идеален для разработки, маленьких single-host production-деплоев и интеграционных тестов в CI/CD системах. Однако, для управления многими хостами или сложными оркестрациями контейнеров лучше использовать Kubernetes (или Nomad, или Docker Swarm). В production-средах важно закреплять теги образов по digest, чтобы избежать нестабильности, связанной с использованием плавающего тега :latest.

Типичные ошибки

При работе с сервисами, depends_on и параметром restart: часто встречаются следующие ошибки:

Связанные понятия

Полезные ресурсы

Проверить знания (1)

Загрузка вопросов…