Що таке 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 містить набір директив. Директиви — це ключові параметри, що визначають, які контейнери будуть запущені, як вони будуть взаємодіяти між собою, де зберігатимуть дані та які ресурси використають. Ось ті, які зустрічаються найчастіше:

  1. version — вказує версію синтаксису Docker Compose.
  2. services — перелік контейнерів, які складають застосунок.
  3. image — визначає, який контейнерний образ використовувати.
  4. build — дозволяє створювати контейнер із Dockerfile.
  5. ports — відкриває доступ до контейнера через певні порти.
  6. environment — задає змінні середовища для контейнера.
  7. volumes — зберігає дані між перезапусками контейнера.
  8. networks — налаштовує зв’язок між контейнерами.
  9. 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. Практикум з адміністрування».

Залишити відповідь

Дякуємо, що поділились