Недавно начал курить тему с докерами
Вообщем, что имеем
Фулл-стэк приложение
3 контейнера
1 Контейнер - Фронт
2 Контейнер - Бэк
3 Контейнер - Nginx с проксированием
Всё запускается через docker-compose
Каким образом всё это лучше деплоить на рабочий сервак?
Тупым способом, копирования исходников проектов на сервак, и уже оттуда запускать через docker-compose build && docker-compose up -d
Или ещё есть более элегантный и быстрый способ?
Хотелось бы не хранить исходники на проекте
И хотелось бы максимально быстро с рабочий станции отправлять изменения на сервак, и чтобы эти контейнеры (уже на серваке) автоматом пересобирались и без глубоких погружений в ci-cd
1. деплоишь новую версию приложения в гите
2. запускается пайплайн, который пушит новый образ в реестр докера
3. запускаешь docker-compose up ... который пулит новый образ
1. Гит репозиторий в этом случае должен все проекты содержать?
Если каждый контейнер - один проект - отдельный репозиторий?
2. Реестр докера - docker hub или собственный?
Джанго Всемогущий,
1. Лучше отдельные - чтобы понимать какой образ пушить и контейнер обновлять
2. Любой. Для начала и докер хаб сойдет, но там лимиты есть, так что однажды перейдешь на личный
Тут можно поспорить, например в п.2 для такого приложения (если в бэке PHP или Python) пересобирать образы вообще не требуется, запулив раз они используются постоянно. Пересобирать потребуется только для обновления компонентов, БД, бэка или веб сервера. Т.е. п.2 как бы и не нужен, нужно просто заменить файлы проекта на сервере и перезапустить контейнер с бэком
нужно просто заменить файлы проекта на сервере и перезапустить контейнер с бэком
Лично для меня это не есть хорошо, не хочу исходники где-то на серваке держать
Пока выбрал вот такой путь
1. Рабочая банка собирает образы и запушивает в какой-нибудь регистр контейнеров
2. Сервак уже пулит обновлённые образы к себе (даже пускай в ручном режиме без ci cd)
3. Также сервак подсобирает обновления и перезапускает контейнеры
Возможно где-то не всё ок в этих шагах, но на текущий момент мою проблему это решает
Это не вопрос желания. Если у вас интерпретируемый ЯП, вам придется хранить исходники на сервере, нет другого варианта запустить проект. А вот запихивать файлы проекта в имадж - не верный подход, это не докер вэй