Що таке Docker Compose?
Docker Compose — це інструмент, який спрощує роботу з багатоконтейнерними застосунками в Docker. Він дозволяє визначати та керувати кількома взаємопов’язаними сервісами за допомогою єдиного конфігураційного файлу у форматі YAML.
Історія Docker Compose починається у 2014 році, коли Docker створив цей інструмент для спрощеного розгортання складних застосунків. Спочатку він викликався за командою docker-compose. З випуском версії 2, Compose був інтегрований безпосередньо в Docker CLI, що дозволило використовувати команду docker compose (без дефіса).
Ключові можливості Docker Compose
- Спрощене керування контейнерами
З Compose ти можеш запустити весь стек застосунку лише однією командою:
docker compose up -d
Створює всі необхідні контейнери, запускає їх у правильному порядку та об’єднує їх в одну мережу, щоб вони «бачили» один одного.
- Використання
docker-compose.yml
Файл docker-compose.yml — це серце Docker Compose. У ньому ти описуєш, які сервіси має запускати Docker, які образи використовувати, змінні середовища та залежності між контейнерами.
Приклад docker-compose.yml:
version: '3'
services:
app:
build:
context: .
command: >
sh -c "python manage.py wait_for_db &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
- Запуск багатоконтейнерних застосунків
Docker Compose дозволяє запускати всі сервіси одночасно, налаштовувати їхню взаємодію та зберігати дані. Можна швидко масштабувати застосунок і додавати нові екземпляри сервісів.
Основні директиви
Конфігураційний файл docker-compose.yml містить набір директив. Директиви — це ключові параметри, що визначають, які контейнери будуть запущені, як вони будуть взаємодіяти між собою, де зберігатимуть дані та які ресурси використають. Ось ті, які зустрічаються найчастіше:
version— вказує версію синтаксису Docker Compose.services— перелік контейнерів, які складають застосунок.image— визначає, який контейнерний образ використовувати.build— дозволяє створювати контейнер із Dockerfile.ports— відкриває доступ до контейнера через певні порти.environment— задає змінні середовища для контейнера.volumes— зберігає дані між перезапусками контейнера.networks— налаштовує зв’язок між контейнерами.depends_on— задає порядок запуску сервісів.
Переваги та недоліки Docker Compose
Спершу розгляньмо переваги інструменту:
- Запуск застосунку вимагає лише одного файлу
docker-compose.ymlі однієї команди. - Конфігурація однакова для розробників як тестового, так і продакшн середовища, тож проблем із сумісністю немає.
- Підтримка змінних середовищ, мереж, томів та різних параметрів запуску дозволяє легко адаптувати застосунок до різних умов.
- Не потрібно вручну налаштовувати зв’язки між сервісами, оскільки вони автоматично об’єднуються в спільну мережу.
- Можна швидко додавати екземпляри сервісів, що зручно для тестування навантаження або розподілених систем.
Мінуси Docker Compose:
- У масштабних системах із десятками мікросервісів краще використовувати Kubernetes, оскільки Compose не підтримує автоматичне балансування навантаження та складне оркестрування.
- Compose не керує контейнерами у кластері, а працює лише на одному хості, що обмежує його використання для розподілених систем.
- Хоча можна керувати мережами та правами доступу, у порівнянні з Kubernetes, Docker Compose має менше механізмів захисту та ізоляції контейнерів.
Як Docker Compose використовують DevOps-інженери?
Docker Compose допомагає створювати та управляти багатоконтейнерними середовищами, що є необхідним для процесів CI/CD. Завдяки Docker Compose, ти можеш швидко відтворити продакшн-середовище на локальній машині та тестувати застосунок з усіма потрібними сервісами. Наприклад базами даних чи вебсервісами. Тобто те, що працює локально буде працювати й на сервері, зменшуючи ймовірність багів при розгортанні.
Docker Compose відіграє важливу роль в автоматизації тестування та розгортанні. Він спрощує налаштування середовища для автоматичних тестів, що знижує час на підготовку і забезпечує більш стабільні й передбачувані результати. Завдяки такій автоматизації, команди DevOps-інженерів можуть зосередитися на інших важливих аспектах роботи, а сам процес розгортання стає значно швидшим і безпечнішим.
Корисні посилання
Документація Docker Compose на офіційному сайті Docker
Покрокова інструкція: як встановити та використовувати Docker Compose
Docker Swarm vs Kubernetes: що обрати?
Опануй Docker Compose за одне заняття на курсі «Docker. Практикум з адміністрування».