使用docker compose将Gitlab CI/CD复制到Digital Ocean,以实现多个回购

使用docker compose将Gitlab CI/CD复制到Digital Ocean,以实现多个回购,docker,docker-compose,gitlab,gitlab-ci,digital-ocean,Docker,Docker Compose,Gitlab,Gitlab Ci,Digital Ocean,目前我在Gitlab中有一个项目(repo),它是一个angular应用程序。我正在使用Gitlab CI/CD构建、测试、发布和部署。发布将构建一个新的docker映像,将其推送到Gitlab注册表,并在我的Digital Ocean droplet上的docker容器中的NGinx上部署它。这个很好用 假设我想向它添加一个后端,就像MEAN堆栈一样,这样我就可以使用docker compose文件运行两个容器 容器1-角度 容器2-Node.js、Express.js和MongoDB 当

目前我在Gitlab中有一个项目(repo),它是一个angular应用程序。我正在使用Gitlab CI/CD构建、测试、发布和部署。发布将构建一个新的docker映像,将其推送到Gitlab注册表,并在我的Digital Ocean droplet上的docker容器中的NGinx上部署它。这个很好用

假设我想向它添加一个后端,就像MEAN堆栈一样,这样我就可以使用docker compose文件运行两个容器

  • 容器1-角度
  • 容器2-Node.js、Express.js和MongoDB
当发生更改(自己的Dockerfile和gitlab-ci.yml文件)时,两个gitlab项目(repo)必须单独构建,但使用docker compose文件一起部署

我在哪里管理/放置docker compose文件?

我希望我的解释是清楚的,如果我的假设是正确的


提前感谢。

根据您的评论,我知道您有兴趣采用monorepo配置

在这种情况下,对于问题

我在哪里管理/放置docker compose文件?

您可以将
docker compose.yml
文件放在GitLab CI项目的根目录下,这将产生如下目录结构:

monorepo-project/
├── backend/
│   ├── Dockerfile
│   ├── .dockerignore
│   └── src/
├── frontend/
│   ├── Dockerfile
│   ├── .dockerignore
│   └── src/
├── docker-compose.yml
├── .git/
├── .gitignore
└── .gitlab-ci.yml
如中所述(本页面的原始版本,由删除,开始于可用),您可以使用键调整配置,以便如果项目的一部分发生更改(例如前端),CI将相应地运行

进一步的指示 有关更多示例,请参见,例如,哪个具体依赖该键,或者哪个利用了该键


最后,GitLab CI YAML conf文件的语义在中有很好的文档记录(要添加书签!)。

这是否回答了您的问题?这可能不是一个完全重复的问题,但总体思路似乎也适用于您的用例:您可以在第三个存储库中添加一个带有专用集成测试的
docker compose.yml
文件,并依靠标签命名约定来获取适当的后端/前端版本,或者在前端repo中使用
docker compose.yml
文件进行2次回购。否则,请遵循所谓的monorepo设置,即带有多个文件夹和单个CI的单个repo。您好,谢谢您的回复。monorepo有一些很大的优势,特别是在这种情况下,但我认为Gitlab CI不可能与monorepo一起使用,这就是我假设创建2个Repo的原因。这是我第一个使用Gitlab CI/CD的项目。我将尝试进一步研究。如果您从GitLab CI开始,我首先建议将
.GitLab CI.yml
YAML参考手册()添加到书签中。接下来,GitLab CI确实支持monorepo工作流,参见。它给出了使用
更改的示例:
键;另请参见例如依靠Docker或利用
需求:
键。