Назад | Перейти на главную страницу

Модернизация старой серверной архитектуры для использования Docker и CI

В настоящее время я использую бэкэнд в производстве и хочу изменить нашу текущую настройку, чтобы использовать Docker для развертывания и инструмент CI для тестирования.

Прямо сейчас у меня есть репозиторий BitBucket с двумя основными ветвями «разработка» и «мастер» и два отдельных сервера для разработки и производства, которые извлекают код из соответствующих ветвей через сценарий оболочки, который я запускаю локально. Таким образом, я тестирую изменения вручную в полностью изолированной среде с сервером разработки и базой данных разработчиков перед объединением в master и развертыванием в производственной среде.

git Repository            dev-server           prod-server
|                        +----------+         +----------+
|-- develop              |          |         |          |
|-- master               |  pulls   |         |  pulls   |
                         |  develop |         |  master  |
                         |          |         |          |
                         +----------+         +----------+

Я хочу изменить это, написав тесты и используя Docker и инструмент CI, такой как Drone (это бэкэнд Go) или Jenkins, но я понятия не имею, как все это работает вместе. Я уже достаточно много читал о Docker, и в большинстве руководств предполагается, что вы разрабатываете локально, а затем развертываете контейнер непосредственно на производственном сервере. Также я предполагаю, что инструмент CI должен быть расположен на сервере разработки?

Может ли кто-нибудь объяснить мне, как возможные потоки будут выглядеть в моем сценарии?

Пример: я вношу изменения локально, а затем нажимаю "разработать". Сервер разработки имеет ловушку git, которая распознает push и каким-то образом запускает CI-сервер, который запускает тесты. Если тесты пройдут МОГ объединить разработку с мастером (это сейчас компакт-диск?), что снова запускает перехватчик на производственном сервере, который создает новый образ и запускает контейнер. Это правильно? Также на каком сервере сейчас размещается репозиторий докеров?