Як використовувати Docker Compose для багатоконтейнерних додатків
10:29, 21.05.2026
1. Інструменти для управління багатоконтейнерними додатками
Сучасні додатки рідко працюють на одному сервісі чи в одному контейнері. Натомість вони часто спираються на декілька взаємопов’язаних сервісів, таких як веб-сервери, бази даних та кеші. Управління цими компонентами вручну може бути виснажливим і схильним до помилок. На щастя, такі інструменти, як Docker Compose, спрощують процес визначення, розгортання та управління багатоконтейнерними додатками.
У цій статті ми розглянемо кілька інструментів для управління багатоконтейнерними середовищами, пройдемося по етапах створення та розгортання проєкту за допомогою Docker Compose, а також обговоримо найкращі практики ефективного управління вашими сервісами.
1.1 Огляд Podman
Podman, або Pod Manager Tool, — це контейнерний двигун з відкритим кодом, розроблений як пряма заміна Docker. Він пропонує інтерфейс командного рядка для управління контейнерами.
Podman не потребує демона для роботи і сумісний із systemd, що дає змогу керувати контейнерами через модулі systemd (та запускати systemd усередині контейнерів).
Він допомагає користувачеві організовувати контейнери в под, які використовують одну мережу та ресурси.
1.1.1 Як встановити Podman
Щоб встановити Podman на системі на базі Linux:
sudo apt update sudo apt install -y podman
Для macOS та Windows ви можете скористатися інсталятором Podman Desktop, доступним на офіційному веб-сайті.
1.2 Вступ до podman-docker
podman-docker — це рівень сумісності, що дозволяє використовувати команди Docker CLI з Podman. Це особливо корисно, якщо ви переходите з Docker або працюєте з інструментами, що очікують команд Docker.
1.2.1 Встановлення podman-docker
Встановіть podman-docker , щоб увімкнути сумісність команд Docker:
sudo apt install -y podman-docker
Після встановлення такі команди, як docker run, docker build, або docker-compose , будуть інтерпретуватися Podman.
1.3 Огляд docker-compose
Docker Compose — це інструмент для запуску багатоконтейнерних додатків Docker за допомогою простого конфігураційного файлу YAML. Він дозволяє описати всі ваші служби, мережі та томи в одному файлі та керувати ними разом. Docker Compose підтримує декілька ізольованих середовищ на одному хості та змінні між ними. Це означає, що за допомогою цього інструменту ви можете відтворити контейнери, які зазнали змін, не змінюючи сам багатоконтейнерний додаток.
1.3.1 Як встановити docker-compose
Ви можете встановити Docker Compose за допомогою офіційного плагіна Docker CLI:
sudo apt update sudo apt install docker-compose-plugin
Або для автономної інсталяції (застаріла на користь плагіна):
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-
compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Перевірка встановлення:
docker compose version
Створення багатоконтейнерного додатка
Давайте створимо простий веб-додаток, що складається з веб-сервера (Nginx), бекенду (Flask) та бази даних (PostgreSQL).
2.1 Написання файлу compose.yml
Файл compose.yml файл (раніше docker-compose.yml) містить усі визначення служб.
2.1.1 Визначення служб
Кожна служба представляє контейнер. Ви можете вказати образ, контекст збірки, порти, томи та змінні середовища.
2.1.2 Налаштування мереж
Compose дозволяє створювати власні мережі, щоб контейнери могли спілкуватися між собою, використовуючи імена своїх служб.
2.1.3 Приклад файлу compose.yml
version: "3.9"
services:
web:
build: ./web
ports:
- "80:80"
depends on:
- backend
backend: build: ./backend
environment:
- DATABASE_URL=postgres://user:password@db:5432/mydb
depends_on:
- db
db:
image: postgres:15
restart: always
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
У цій конфігурації:
- web — це фронтенд, що обслуговується Nginx.
- backend — це сервер API на базі Flask.
- db — це контейнер PostgreSQL із постійним сховищем.
2.2 Розгортання багатоконтейнерних додатків
Як тільки ваш файл compose.yml буде готовий, розгорніть додаток за допомогою:
docker compose up --build
Ця команда створює образи (якщо потрібно) та запускає всі служби. Ви можете зупинити додаток за допомогою:
docker compose down
Щоб запустити служби у фоновому режимі:
docker compose up -d
Управління багатоконтейнерним додатком
Docker Compose також спрощує управління вашими службами. Можливості:
- Масштабування служб:
docker compose up -d --scale backend=3
Це запускає три екземпляри сервісу бекенду (корисно для балансування навантаження).
- Перегляд журналів:
docker compose logs -f
- Перевірка стану сервісу:
docker compose ps
- Перекомпіляція образів:
docker compose build
- Виконання одноразових команд:
docker compose exec backend flask db upgrade
Docker Compose дозволяє керувати життєвим циклом вашого додатка передбачуваним та повторюваним чином.
З Docker Compose управління багатоконтейнерними додатками стає набагато простішим, особливо у випадках, коли маєте справу з середовищами, що вимагають послідовного налаштування та демонтажу. Незалежно від того, чи ви будуєте локально, чи готуєтеся до виробництва, Compose дозволяє вам визначити всю архітектуру вашого додатка в одному файлі та тримати все під контролем.
Юридична інформація
Docker є торговою маркою компанії Docker, Inc. Podman — це проект з відкритим кодом, який підтримується компанією Red Hat та іншими організаціями. Усе згадане програмне забезпечення підпадає під дію відповідних ліцензій з відкритим кодом.
Під час розгортання додатків у виробничих середовищах переконайтеся, що ви дотримуєтеся ліцензійних вимог щодо всіх образів та залежностей, які ви використовуєте.