Docker Compose
Что такое Docker Compose
Docker Compose позволяет описать сразу несколько контейнеров в одном
файле docker-compose.yml и управлять ими как единым
приложением. Это удобно, когда сервисов больше одного: например,
веб-приложение и база данных.
Структура файла
Основные директивы docker-compose.yml:
| Ключ | Назначение |
|---|---|
services | Список сервисов (контейнеров) |
image | Готовый образ из реестра |
build | Сборка образа из Dockerfile |
ports | Проброс портов «хост:контейнер» |
volumes | Постоянное хранилище данных |
environment | Переменные окружения |
depends_on | Порядок запуска сервисов |
restart | Политика перезапуска |
Пример
Приложение на Node.js с базой данных PostgreSQL:
services:
app:
build: .
ports:
- "3000:3000"
environment:
DATABASE_URL: postgres://user:pass@db:5432/app
depends_on:
- db
restart: unless-stopped
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: app
volumes:
- db-data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
db-data:
Основные команды
Запустить все сервисы в фоне:
docker compose up -d
Собрать образы перед запуском:
docker compose up -d --build
Посмотреть статус сервисов:
docker compose ps
Логи всех сервисов или одного конкретного:
docker compose logs -f
docker compose logs -f app
Остановить и удалить сервисы. Флаг -v удалит и тома:
docker compose down
docker compose down -v
Перезапустить отдельный сервис:
docker compose restart app
Выполнить команду внутри запущенного сервиса:
docker compose exec app sh
Полезные мелочи
docker compose pull— обновить образы до свежих версий.docker compose config— проверить корректность файла.- Имя сервиса в compose — это сразу и hostname внутри сети.