1 min read

Ansible для Docker Compose: деплой контейнеров без ручных ssh-сессий

Ansible для Docker Compose: деплой контейнеров без ручных ssh-сессий

Сижу в пятницу вечером, допиваю чай. Вдруг — сообщение от клиента: сайт не открывается. SSH-доступ есть, но я не помню, на каком сервере что запущено. Знакомо?

Предыстория

У меня несколько self-hosted проектов: CRM, пара блогов, трекер задач. Раньше я заходил на каждый сервер руками, подтягивал образы, переписывал compose-файлы.

Однажды я забыл обновить переменные в .env на одном из серверов. Prod упал на час. Клиент был недоволен.

Проблема

Ручные ssh-сессии — это риск. Всегда найдется сервер, на котором забыл выполнить docker pull. Или compose-файл лежит в другом каталоге.

Я тратил по 20 минут на деплой простого обновления. А если проектов пять — это уже два часа тупого копирования команд.

Почему это важно

Каждая минута простоя — деньги. Даже для маленького pet-проекта потеря времени демотивирует.

Деплой должен быть как нажатие одной кнопки. Или одной команды в терминале. Иначе ты просто теряешь ресурс на рутину.

Решение

Я написал простой Ansible playbook для Docker Compose. Он делает три вещи:

  • 🚀 Копирует compose-файл и .env на сервер
  • 📦 Выполняет docker compose pull для обновления образов
  • 🔄 Перезапускает сервисы: docker compose up -d --remove-orphans

Весь процесс занимает одну команду: ansible-playbook deploy.yml. Без ручного входа по ssh. Без проверки, не забыл ли я что-то.

Я добавил пару переменных — имя хоста и путь. Теперь один playbook работает для всех моих проектов. Просто меняю инвентори.

Результат

Обновление любого сервиса теперь занимает 10 секунд. Я запускаю команду и пью кофе.

Ручные ошибки ушли. Серверы всегда в актуальном состоянии. Могу спокойно уехать на выходные — деплой сделает коллега одной командой.

Для небольших self-hosted проектов этого достаточно. Ansible не перегружен лишними абстракциями. Docker Compose не требует сложных оркестраторов.


📬 Свяжитесь с нами

Хотите внедрить это в своем бизнесе? Пишите нам!

Связаться с нами
Telegram
WhatsApp
Email