Со шрамами приходит сила

И снова здрасти. Хуй знает, очевидная эта штука для тебя или нет, но я всё равно её подсвечу.

Предположим, у тебя есть какой-то проект, описанный в docker-compose.yml. Вся эта чача раскатывается через пайплайны GitLab на продакшен.

Из того, что я постоянно вижу: после сборки проекта все собранные файлы копируются на продакшен с помощью rsync, scp или подобных утилит, ну и ранится всё это дело через ssh.

Например:

script:
  - билд хуилд
  - rsync -avz --delete ./ user@$prod:/var/www
  - ssh user@$prod "docker compose up -d"
  1. Что-то там собралось
  2. Файлы синканулись с продом
  3. Запустилось, если смогло

Хуита! Всё делается изящнее. Ща покажу.

stage: deploy
image:
  name: docker/compose
script:
  - docker-compose -H "ssh://root@$prod" down --remove-orphans
  - docker-compose -H "ssh://root@$prod" pull
  - docker-compose -H "ssh://root@$prod" up -d
Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Используем мощности docker-compose, не привлекаем никакие rsync, scp и т. п. А сразу нативно запускаем на проде наш docker-compose.yml файл.

Никаких лишних файлов не копируется, никаких утилит, минималистично. Я примеры сократил, но суть ты поймёшь. Не обязательно тащить на прод какие-то ямеэльки.

В штыки не воспринимай, способ с rsync и т. п. вполне годный. Но делюсь тем, чем пользуюсь сам. У меня Telegram-боты так деплоятся.

Изучай. Не отвлекаю! Если хоть одному из вас пригодится, это уже хорошо!