Серверы & ОС

Что такое Docker Compose

Что это

Файл, в котором описано, какие контейнеры составляют проект (сайт, база, бот) и как они связаны. Одна команда поднимает всё разом, на любом сервере одинаково.

Как используем

Каждый проект студии — это папка с docker-compose.yml и .env на сервере. Переезд на другой сервер — копирование папки и одна команда.

Где это нужно бизнесу

  • Проект состоит из нескольких частей — бот, база, кэш, веб-панель — и запускать их по одной долго и рискованно.
  • Сервер нужно сменить за час, а не за неделю.
  • Дополнительную функцию хочется включать флагом, не трогая основной проект.

Как мы это используем

Каждый проект студии — папка с файлом docker-compose и .env на сервере. Переезд — копирование папки и одна команда.

  • Порядок запуска. В тикет-системе Compose поднимает MariaDB и Redis с проверками здоровья, бот стартует только после них, миграции применяются сами.
  • Профили. В боте загрузки видео локальный Bot API для файлов до 2 ГБ, Hi-Res-раздел и прокси с российским выходом включаются отдельными профилями.
  • Общие файлы. В ToshaMusic бот и локальный telegram-bot-api видят один каталог данных по одному и тому же пути, иначе сервер не нашёл бы файл.
  • Потолки ресурсов. В «Переговорке» у каждой службы свой предел процессора и памяти, чтобы одна не задушила остальные.
  • Три контейнера. Финансовый ассистент — база, бот и веб-часть.

Типичные проблемы

  • Зависимости без проверки здоровья. «Контейнер базы запущен» не значит «база готова». Зависимость ставим на healthcheck, а не на факт запуска.
  • Разные пути к одному файлу. Если общий каталог смонтирован в двух контейнерах по разным путям, один из них файла не увидит.
  • Часовой пояс. Его задаём в environment каждого контейнера, иначе время в логах и напоминаниях будет по хостингу.
  • Секреты в файле Compose. Токены и пароли — в .env, который не попадает в репозиторий.

Когда это не нужно

Для одного контейнера без базы, как у статического сайта, хватает обычного Docker, а в масштабах нескольких серверов с автоматическим распределением нагрузки нужен уже Kubernetes. Compose — золотая середина для проекта на одном сервере.

← Все термины

Нужен сайт, бот или автоматизация?

Термины объяснили — теперь давайте к делу: расскажите о задаче, а мы переведём её на понятный план работ.