Зачіпка
Потрібно запустити кілька контейнерів (наприклад, веб‑сервер + база даних) і не писати безліч docker run‑команд? Docker Compose робить це за вас.
Проблема / Контекст
Коли проєкт розростається, окремі docker run‑команди стають важкими для підтримки: потрібно памʼятати порти, volume‑и, змінні середовища. Без централізованого файлу важко відтворити середовище на новій машині.
Чому це важливо
Compose забезпечує детерміноване та повторюване локальне середовище, дозволяє швидко підняти стека для розробки, тестування та навіть в продакшн‑міні‑кластерах.
Як це зробити
1. Файл docker-compose.yml
version: "3.9"
services:
web:
image: nginx:stable-alpine
ports:
- "8080:80"
depends_on:
- db
environment:
- DB_HOST=db
db:
image: postgres:15-alpine
volumes:
- db-data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
db-data:
2. Файл .env
POSTGRES_USER=app
POSTGRES_PASSWORD=secret
POSTGRES_DB=appdb
3. Запуск
docker compose up -d # підняти всі сервіси у фон
docker compose ps # статус
4. Логи та відладка
docker compose logs -f web # слідкуємо за виводом Nginx
5. Очищення
docker compose down --volumes # зупинити та видалити volume‑и
Антипатерни
- Використання
latest‑тегу – у продакшн‑середовищі це непередбачувано. - Hard‑coded паролі у
docker‑compose.yml– зберігайте їх у.envабо Vault. - Відсутність
depends_on– сервіси можуть стартувати в неправильному порядку. - Незакриті volume‑и – залишають дані між запуском, що у тестах часто плутає результати.
Висновок / План дій
- Створіть
docker-compose.ymlі.envзгідно прикладу. - Запустіть
docker compose up -dі переконайтесь, що веб‑сервер відповідає. - Додайте моніторинг контейнерів (Grafana + Prometheus) для продакшн‑версії.
- Перевірте, що усі секрети знаходяться в безпечному сховищі.
- Очищайте середовище після тестів, щоб уникнути «запилення» volume‑ів.
Короткий чеклист
- Створити `docker-compose.yml` з сервісами та мережами.
- Запустити `docker compose up -d` і перевірити статус.
- Налаштувати volume для зберігання даних.
- Перевірити змінні середовища через .env файл.
- Очищати ресурси: `docker compose down --volumes`.
Prompt Pack: Docker Compose quick‑start
Напиши статтю про Docker Compose для початківців. Поясни, що це, як створювати `docker‑compose.yml`, приклади сервісу веб‑серверу + БД, як запускати, зупиняти, переглядати логи. Додай чек‑лист, типові помилки та анти‑патерни. Не додавай пояснення термінів у дужках.