Docker и CI/CD: как все-таки происходит этот магический деплой?

Прочитал множество статей, посмотрел много примеров на тему CI/CD и везде какая-то своя модель ci/cd.

И они абсолютно разные.
Начиная от использования абсолютно разных вспомогательных приложений, и заканчивая монструозными bash-скриптами.

Я не могу для себя выделить какие-то общие принципы, и начать двигаться в каком-то направлении, чтобы разобраться. Т.к. мне на этом этапе непонятно, какое из решения является правильным, а какое нет.

Я понимаю, что одного правильного решения не бывает, и у каждого проекта своя специфика и свои требования.
Но есть ли какие-то базовые (или классические решения), которые похожи для большинства типовых проектов?

Где про это можно почитать?

Например, для меня совсем непонятно, как происходит деплой на сервер, если на нем крутится 10 контейнеров.

Каким образом код попадает туда, чтобы все продолжало работать.
Что происходит, если поменялась конфигурация, например для Nginx?
Какие инструменты для этого нужно использоваться еще, если я пользуюсь GitLab CI?
  • Вопрос задан
  • 678 просмотров
Пригласить эксперта
Ответы на вопрос 3
vabka
@vabka
Токсичный шарпист
1. Во время ci собираешь docker image и закидываешь в docker registry (как правило приватный)
2. Во время cd вызываешь API твоего оркестратора:
docker-compose/docker swarm/k8s и тд, чтобы он обновил запущенные сервисы

Оба этапа можно реализовать разными способами, хоть через гитлаб, хоть через кучу баш скриптов

PS: docker-compose не является оркестратором и не умеет на ходу обновлять образы
Ответ написан
gbg
@gbg
Любые ответы на любые вопросы
Общее в CI/CD - это идея, данный набор практик закрывает вопросы 2 и 3 из теста Спольски

То есть, в данном случае, важна идея, а не конкретный путь к ее реализации (делать это через Доскер или через развертываение VM, использовать для этого вязанку батников или монстра вроде TeamCity - это уже частности - важно, что нажатие одной кнопки приводит к появлению где-то полностью собранного с нуля и развернутого актуального билда Продукта)
Ответ написан
Комментировать
@vitaly_il1
DevOps Consulting
Согласен с Армянское Радио - важна идея, точнее понимание процесса и умение сделать все вручную.
А автоматизировать с помощью тех или иных инструментов - дело второе.
Посмотрите пример в моем ответе https://qna.habr.com/q/1016852#answer_1981278
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы