【发布时间】:2020-10-30 16:25:57
【问题描述】:
目前我在 Gitlab 中有一个项目 (repo),它是一个 Angular 应用程序。我正在使用 Gitlab CI/CD 来构建、测试、发布和部署。发布将构建一个新的 docker 映像,将其推送到 Gitlab 注册表,然后在我的 Digital Ocean 液滴上的 docker 容器中将其部署到 NGinx 上。这很好用。
假设我想像 MEAN 堆栈一样向它添加一个后端,这样我就可以使用 docker-compose 文件运行 2 个容器。
- 容器 1 - 角度
- 容器 2 - Node.js、Express.js 和 MongoDB
当发生更改时(自己的 Dockerfile 和 gitlab-ci.yml 文件)必须单独构建 2 个 gitlab 项目(repo),但使用 docker-compose 文件一起部署。
我在哪里管理/放置 docker-compose 文件?
如果我的假设正确,我希望我的解释很清楚。
提前致谢。
【问题讨论】:
-
In CI/CD how to manage dependency between frontend and backend? 可能不是一个完全重复的问题,但总体思路似乎也适用于您的用例:您可以在第三个存储库中添加带有专用集成测试的
docker-compose.yml文件,然后依靠标签命名约定来提取正确的后端/前端版本,或可能只有 2 个存储库,前端存储库中的docker-compose.yml文件。 否则,请遵循所谓的 monorepo 设置,即具有多个文件夹和单个 CI 的单个 repo。 -
您好,感谢您的回复。 Monorepos 有一些很大的优势,尤其是在这种情况下,但我认为 Gitlab CI 不可能使用 monorepo,这就是我假设创建 2 个 repos 的原因。这是我第一个使用 Gitlab CI/CD 的项目。我会尝试进一步研究。
-
如果您从 GitLab CI 开始,我首先建议您将
.gitlab-ci.ymlYAML 参考手册 (docs.gitlab.com/ee/ci/yaml) 加入书签。接下来,GitLab CI 确实支持 monorepo 工作流程,参见。 this doc page 给出了使用changes:键的示例;另见例如this article 依赖 Docker 或 that article 利用needs:键。
标签: docker docker-compose gitlab gitlab-ci digital-ocean