Где Compose в проде — норм, а где пора переходить на оркестратор. И пять правил, если оставляем.
Docker Compose — отличный инструмент для разработки, но «у нас так в проде стоит» — отдельный жанр трагедии. Разберем, где compose оправдан, а где пора переходить на оркестратор.
Когда Compose в проде — норм
Одиночный сервер на 3–10 сервисов, который не планируется масштабировать: лендинг, внутренний инструмент, gateway. Compose дает:
- простоту — один файл описывает всю систему
- воспроизводимость окружения
docker compose up -dвместо десятка systemd-юнитов
services:
app:
image: app:1.4.2
restart: unless-stopped
depends_on:
- db
environment:
DATABASE_URL: postgres://app:pass@db:5432/app
db:
image: postgres:16
volumes:
- dbdata:/var/lib/postgresql/data
volumes:
dbdata:
Когда пора уходить
- Нужен горизонтальный масштабирование реплик
- Требуется автоскейлинг и self-healing по ресурсам
- Несколько нод и вопросы балансировки
- Деплой должен быть blue/green, а не
docker compose pull && up -d
Правила, если оставляем
- Фиксируйте версии образов тегом, а не
latest restart: unless-stoppedу каждого сервиса — обязательно- Секреты — через
env_fileс правами600, а не в compose-файле в git - Мониторинг: без healthcheck'ов и алертов compose в проде — слепая зона
- Бэкап — отдельная задача в cron, не «а оно ж в volume'е»
Итог: compose в проде допустим осознанно, а не потому что «так проще начать».