Gitlab CI / CD в Digital Ocean для нескольких репозиториев с использованием docker -compose - PullRequest
1 голос
/ 10 июля 2020

В настоящее время у меня есть проект (репо) в Gitlab, который представляет собой приложение angular. Я использую Gitlab CI / CD для сборки, тестирования, выпуска и развертывания. При освобождении будет создан новый образ docker, который будет помещен в реестр Gitlab и после его развертывания на NGinx в контейнере docker в моей капле Digital Ocean. Это отлично работает.

Допустим, я хочу добавить к нему бэкэнд, например стек MEAN, чтобы у меня было 2 контейнера, работающих с использованием файла docker -compose.

  • контейнер 1 - Angular
  • контейнер 2 - Node.js, Express. js и MongoDB

2 проекта gitlab (репозиторий) должны быть построены отдельно, когда происходит изменение (собственный файл Dockerfile и файл gitlab-ci.yml), но развернутые вместе с использованием файла docker -compose.

Где мне управлять / помещать docker -compose файл?

Надеюсь, мое объяснение понятно и правильно ли я предполагаю.

Заранее спасибо.

1 Ответ

1 голос
/ 11 июля 2020

Согласно вашему комментарию, я понимаю, что вам было бы интересно принять конфигурацию monorepo .

В этом случае для вопроса

Где мне управлять / помещать файл docker -compose?

вы можете просто поместить файл docker-compose.yml в root вашего проекта GitLab CI, что приведет к в структуру каталогов, подобную этой:

monorepo-project/
├── backend/
│   ├── Dockerfile
│   ├── .dockerignore
│   └── src/
├── frontend/
│   ├── Dockerfile
│   ├── .dockerignore
│   └── src/
├── docker-compose.yml
├── .git/
├── .gitignore
└── .gitlab-ci.yml

Как указано в https://docs.gitlab.com/ee/user/packages/workflows/monorepo.html, вы можете настроить свою конфигурацию с помощью клавиши changes:, чтобы если изменяется только одна часть проекта (например, интерфейс), то CI ведет себя соответствующим образом.

Дополнительные указатели

Дополнительные примеры см., например, в этой статье на Medium который специально использует Docker или эту статью в блоге , в которой используется ключ needs:.

Наконец, семантика файла конфигурации GitLab CI YAML хорошо документирована в https://docs.gitlab.com/ee/ci/yaml/ (добавить в закладки!).

...