Деплой проекта позволяет сделать ваше приложение видимым для вашей аудитории. Мы, в Wormsoft, перепробовали разные варианты деплоя. Для небольших проектов мы остановились на варианте простого Bash скрипта вместе с правильно настроенным docker-compose файлом.
В итоге мы получили результат, в котором наше "микросервисное" приложение декларативно разворачивается на сервере клиента и легко обновляется при выходе новых версий исходников.
Экспериментальное видео
В этот раз я решил оформить свой опыт в видео небольшого видео-урока.
Буду признателен за ваш просмотр и обратную связь. Если что-то я сделал критически неправильно, то будет круто об этом узнать. Если видео понравилось, то знать про это тоже лишним не будет:)
Docker-compose с env переменными вместе Bash творят чудеса!
Основная идея заключается в том, что рядом с docker-compose.yml можно положить файл .env примерно со следующим содержимым
MICROSERVICE_1_SRC_DIR=/var/src/microservice_1 MICROSERVICE_2_SRC_DIR=/var/src/microservice_2 MICROSERVICE_3_SRC_DIR=/var/src/microservice_3 PROJECTS_BRANCH=master
И сделать блок build в docker-compose следующим
service1: build: context: ${MICROSERVICE_1_SRC_DIR} dockerfile: Dockerfile
А в bash скрипте, которые будет заниматься деплоем всего сервиса сделать следующую запись:
folders=(\ $MICROSERVICE_1_SRC_DIR\ $MICROSERVICE_2_SRC_DIR\ $MICROSERVICE_3_SRC_DIR\ ) for folder in ${folders[*]} do echo "update " $folder cd $folder && git fetch cd $folder && git reset --hard origin/$PROJECT_BRANCH done docker-compose up -d --build
И получить новую собранную версию все проекта со всеми микросервисами. Если выходит новая версия какого-то из сервисов, то мы запускаем этот скрипт, который обновит исходники, пересоберет образы и запустит контейнеры и приложение заработает как надо. Все эти идеи детально отображены в моем видео, так что приятного просмотра!
Полезные ссылки
В видео я упоминаю несколько раз свои репозитории с примером проекта. Прикладываю ссылки сюда:
- github.com/gmoreva/1-bdc-interface - пример интерфейса, который общается с публичным микросервисом.
- github.com/gmoreva/1-bdc-service-example - пример "микросервисов", которые общаются между собой через REST и один из них открыт в паблик и доступен для интерфейса.
- github.com/gmoreva/1-bdc-prod - репозиторий с примером боевогоо docker-compose файла, bash скрипта и примером .env. Данный пример разворачивает
Благодарю за внимание!