Skip to content

Sample microservices repo with publishing and deployment via Docker

Notifications You must be signed in to change notification settings

REAL-NET/microservices-sample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Пример репозитория микросервисного приложения

CircleCI

Как это устроено

В репозитории имеются два микросервиса, каждый из которых билдится в свой образ контейнера Docker. Кроме этого, средствами CircleCI реализована сборка образов удаленно, которые затем размещаются в хранилице GitHub Registry.

Как запустить

В корне репозитория имеется скрипт run.sh, который

  • Получает текущую рабочую ветку git
  • Запускает docker контейнеры, соответствующие этой ветке
  • Если образы этих контенеров представлены локально, он запускает их
  • Иначе он сам докачивает соответсвующие образы из GitHub Registry (соответственно он может спросить логин и пароль (или токен))

О том, какие порты используются для каждого контейнера, указано в параметре -p. Например, при запуска с -p 8000:80 можно получить ответ с localhost:8000 (пока только по http)

Если git не настроен в текущей папке, по умолчанию используются образы с ветки master.

Если же работа происходит в локальной ветке, и пока никакие образы не выложены в GitHub Registry, то перед запуском эти образы нужно собрать локально, т.е. выполнить build.sh.

CI

Сейчас сборка и выкладка образов осужествляется для каждой ветки в репозитории. Для каждой ветки создается свой образ, отличающийся тегом, например

docker.pkg.github.com/real-net/microservices-sample/goodbye:master
docker.pkg.github.com/real-net/microservices-sample/goodbye:dev-sample 

Соответсвенно, при запуске через run.sh используется образ с тегом текущей рабочей ветки.

Конфигурация CircleCI достаточно легко переносима. Путем внимательного вгляда и замены значений переменных и переменных окружения, можно настроить деплой для любого подобного проекта. Для доступа в Registry может потребоваться выписать токен.

Шаги задаются для каждого сервиса независимо. Таким образом, сборка и выкладка одного не влияет на другие. Шаги описаны как параментирозованные команды, так что для переноса в свой проект нужно только поменять переменные окружения и указать правильный порядок шагов с правильными параметрами.

About

Sample microservices repo with publishing and deployment via Docker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages