Як встановити та використовувати Docker Compose: покрокова інструкція
Створити програму, яка не буде для своєї роботи використовувати інший сервіс майже неможливо. Хоч база даних, але потрібна. Зазвичай, сервіси розміщують в контейнерах для зручного їх розгортання та взаємодії — контейнеризація стала важливою частиною інфраструктури як малих, так і великих бізнесів.
Таке зручне рішення все ж створює одну проблему — коли мікросервісів стає багато, то відповідно виникає багато контейнерів. Управляти ними за допомогою лише Docker стає складно. Тоді на допомогу приходить Docker Compose.
Що таке Docker Compose
Docker Compose — це інструмент, який допомагає керувати декількома контейнерами Docker одночасно за допомогою правил, визначених у файлі docker-compose.yml. Завдяки цьому файлу можна створити повністю кастомізоване середовище з декількома контейнерами, які можуть спільно використовувати мережі та обсяги даних.
Різниця між Docker та Docker Compose
Docker використовують, щоб управляти окремим сервісом (контейнером), з якого складається застосунок.
Docker Compose використовують, щоб одночасно управляти декількома контейнерами одного і того ж застосунку. У Docker Compose такі ж можливості як в Docker, але він дозволяє працювати з набагато складнішими застосунками.
Як встановити Docker Compose в Ubuntu 20.04
Перед тим як почати роботу з Docker Compose, переконайся, що у тебе:
- встановлена остання версія Ubuntu 20.04.
- немає прав root, але є привілеї sudo
- встановлений Docker Engine на компʼютері.
Крок 1. Встанови Docker Compose
Переглянь в репозиторії GitHub, яка остання версія Docker Compose. На момент написання цієї статті — v2.20.2.
Щоб завантажити Docker Compose виконай команду:
sudo curl -L "https://github.com/docker/compose/releases/download/2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Вона збереже файл за адресою /usr/local/bin/docker-compose.
Тепер надай необхідні дозволи для виконання команд:
sudo chmod +x /usr/local/bin/docker-compose
Щоб переконатись, що встановлення пройшло успішно, виконай команду:
docker-compose --version
Якщо Docker Compose встановився успішно, то ти побачиш приблизно такий текст ↴
Output
docker-compose version 2.20.2, build 323ad36
Крок 2. Налаштуй файл docker-compose.yml
Це файл конфігурації із налаштуваннями сервісів, які буде виконувати Docker Compose.
Базово файл docker-compose.yml виглядає ось так:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./app:/usr/share/nginx/html
Ми не будемо розписувати детально всю структуру файлу. Розглянемо лише основні ключові слова ↴
Version. Вказуємо, яку версію конфігурації ми використовуємо. У нас вказана 3.8 — найновіша версія на момент написання статті.
Services. В цьому розділі визначаються всі контейнери, що ми створимо. У прикладі — це сервіси «web» та «redis».
Web. Це назва сервісу. Docker буде створювати контейнери з назвою, яку ми задамо.
Build. Параметри конфігурації, що буде застосовувати інструмент під час збирання. Може бути як шлях чи як Dockerfile.
Ports. Вказуємо порти, що з’єднуватимуть хост-сервер і контейнери.
Volumes. Контейнери Docker не зберігають файли й втрачають їх після перезапуску. З volumes можна створити постійне сховище даних через монтування каталогу з хоста Docker до каталогу контейнера.
Якщо хочеш використовувати volumes в декількох сервісах, визнач іменований том в ключі верхнього рівня.
Images. Вказуємо образ, з якого запускатиметься контейнер. Може бути репозиторієм чи частковим ідентифікатором образу.
Якщо образ не існує, Docker Compose намагатиметься вилучити його, окрім ситуації коли ти прописав його у build. Тоді він намагатиметься створити образ з використанням вказаних параметрів та відмітить відповідним тегом.
Depends on. Вказуємо залежність між сервісами, наприклад, спочатку має запуститись сервер, а потім обраний мікросервіс.
Крок 3 Запусти Docker Compose
Після того як ти підготував файл docker-compose.yml, можна запускати Docker Compose. Він завантажить необхідні образи, створить контейнер і запустить його у фоновому режимі.
docker-compose up -d
Щоб переконатись, що контейнер активний, виконай команду:
docker-compose ps
Вона покаже стан запущених контейнерів.
Крок 4. Керуй контейнерами
Зібрали основні команди Docker Compose, які допоможуть тобі управляти контейнерним середовищем і взаємодіяти з ним ↴
logs — журнали контейнерів.
docker-compose logs
pause — призупинити виконання середовища без зміни поточного стану контейнерів.
docker-compose pause
unpause — відновити виконання після паузи.
docker-compose unpause
stop — завершити виконання контейнера без знищення даних, повʼязаних з контейнером.
docker-compose stop
down — видалити контейнери, мережі та томи повʼязані з контейнерним середовищем.
docker-compose down
rm — видалити базовий образ з системи.
docker image rm назва
Як використовувати Docker Compose
Сервіс допомагає розробникам та тестувальникам удосконалити робочий процес. Найпопулярніші варіанти використання Docker Compose ↴
Розгортання на одному хості
Docker Compose традиційно використовується для тестування та розробки. Також його можна використовувати для розгортання контейнерів та їх управління в одній хост системі.
Ізольоване середовище розробки
З Docker Compose ти можеш запускати застосунки в ізольованому середовищі, яке працюватиме на будь-якому комп’ютері із встановленим Docker. Це спрощує тестування застосунку та дозволяє працювати в найбільш наближеному до виробничого середовищі.
Файл Compose керує всіма залежностями застосунку: базами даних, чергами, кешем тощо. Він може створювати кожен контейнер за допомогою однієї команди.
Середовище автоматизованого тестування
Щоб проводити автоматизовані тести, потрібне середовище тестування. За допомогою Docker Compose ти можеш створювати ізольовані середовища для проведення автоматизованого тестування.
Полегшуй розгортання застосунків зі складною архітектурою
Тобі потрібен Docker Compose, якщо застосунку для запуску необхідні два або більше сервіси, або в майбутньому ти плануєш розвивати та розширювати програмне забезпечення.
Щоб потім не довелось думати над тим, чи всі мікросервіси перенесено, контейнеризуй застосунок одразу та спрости собі розгортання інфраструктури в майбутньому.
Опануй підняття проєктів у Docker в IT Education Center Навчимо створювати мережі для контейнерів, працювати зі змінними оточення збирати контейнери в кілька етапів, запускати застосунки з декількох контейнерів. Курс триває 3 тижні: 6 теоретичних занять по 2 години та 30 годин практики. В кінці курсу — проєктна робота, що імітує реальну робочу задачу. |