使用 docker-compose 将 Gitlab CI/CD 转至 Digital Ocean 以实现多个存储库

2024-03-08

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

假设我想向其中添加一个后端(例如 MEAN 堆栈),这样我就可以使用 docker-compose 文件运行 2 个容器。

  • 容器 1 - Angular
  • 容器 2 - Node.js、Express.js 和 MongoDB

当发生更改时,必须单独构建 2 个 gitlab 项目(存储库)(自己的 Dockerfile 和 gitlab-ci.yml 文件),但使用 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

正如指出的https://docs.gitlab.com/ee/user/packages/workflows/monorepo.html https://docs.gitlab.com/ee/user/packages/workflows/monorepo.html(本页原版,已被删除这次提交 https://gitlab.com/gitlab-org/gitlab/-/commit/b68b6c610afa5707e289ddc0df1e9d7fdbc5919f,仍然可以在this URL https://web.archive.org/web/20201130172957/https://docs.gitlab.com/ee/user/packages/workflows/monorepo.html),您可以使用以下命令调整您的配置changes: https://docs.gitlab.com/ee/ci/yaml/#onlychanges--exceptchanges关键,这样如果项目的一部分发生变化(例如前端),那么 CI 就会做出相应的行为。

进一步的指示

有关更多示例,请参见这篇文章发表在Medium上 https://medium.com/swlh/on-monorepos-and-the-deployment-with-gitlab-ci-cd-bc080cfc6dce具体依赖于Docker https://docs.gitlab.com/ce/ci/docker/, or 那篇博客文章 https://aarongorka.com/blog/gitlab-monorepo-pipelines/它利用了needs: https://docs.gitlab.com/ee/ci/yaml/#needs key.

最后,GitLab CI YAML conf 文件的语义在https://docs.gitlab.com/ee/ci/yaml/ https://docs.gitlab.com/ee/ci/yaml/(要添加书签!)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 docker-compose 将 Gitlab CI/CD 转至 Digital Ocean 以实现多个存储库 的相关文章

随机推荐

  • 使用 IIS 和 ACL 的 WCF 授权

    我正在尝试保护一些 WCF 服务 如果可能的话 我想使用 IIS 或 Web config 来完成所有繁重的工作 配置 我不想在我的代码中嵌入任何东西 我想我知道这可能不可行 如果可能的话 我想实现这一点而不必求助于 AspCompatib
  • 不透明度低于 childs 的容器

    我想制作我的网页background color with opacity 0 5但网页内的内容会有一个opacity 1 作为默认值 问题是如果我设置opacity 0 5对于容器 该容器内的所有子级都相同opacity value 我搜
  • 关于如何使用R和ggplot2绘制背对背图的问题

    我的目标是绘制一个金字塔图 如所附的那样 我找到了几个使用 ggplot 的示例 但我仍然在努力将我的示例应用于我的数据 或我想要绘制的数据 structure list serial c 40051004 16160610 1609031
  • Centos 无法安装 mysqli

    我无法安装Mysqli 我正在使用 Centos 6 apache 2 2 x 和 php 5 4 MySql 5 5 37 cll I tried yum install php pdo php mysqli 我看到 Loaded plu
  • 使用批处理文件发送电子邮件

    我的 Outlook 配置了我的办公室 ID 并且对批处理脚本非常陌生 通过批处理文件向我的同事发送电子邮件的最简单的方法 最简单的代码 是什么 thanks 我可以为你看到 3 个选项 最重要的是 批处理没有内置方法 但有可以从批处理文件
  • 检查优惠券是否应用于 WooCommerce 中的购物车

    我需要找到一种方法来检查优惠券是否适用于 WooCommerce 结帐 如果是这样 我想做点什么 我尝试四处寻找这个问题 但找不到解决方案 这是我正在尝试的精简版本 add action woocommerce before cart ta
  • 自定义 Clipper 贝塞尔曲线 Flutter

    我目前无法绘制贝塞尔曲线 The output I have right now is The output that I need is 我应该在此处添加什么作为贝塞尔值来获得曲线 自定义剪辑器的代码片段是 class OnBoardin
  • 链接到电子邮件附件

    您好 我正在发送电子邮件附件 使用 php 并想向我向其发送电子邮件的人指出有附件 我想通过在电子邮件的 html 正文中显示一个链接来实现此目的 因此他们所需要做的就是单击该链接 系统将尝试打开 查看附件 有谁知道这是否可能 如果是这样
  • 如何在 Tkinter 中通过一个“绑定”绑定多个小部件?

    我想知道如何用一个 绑定 绑定多个小部件 例如 我有三个按钮 我想在悬停后更改它们的颜色 from Tkinter import def SetColor event event widget config bg red return de
  • 检索客户端的 PC 名称? (Windows 身份验证)

    我有一个在内部网络上运行的 ASP net 应用程序 实际上它在 Sharepoint 2007 上运行 我只是好奇 我可以以某种方式检索客户端正在使用的 PC 的名称吗 如果有帮助的话 我可以访问 Active Directory 问题是
  • Safari 上的 CSS 翻译问题

    我正在努力将我制作的 Gif 转换为 CSS 动画 在 Chrome Firefox Opera 上一切正常 但在 Safari 上却出现问题 当我最初加载页面时 图像会忽略翻译并位于下方 但是一旦我单击 Safari 选项卡并返回 页面就
  • 将列列表作为向量传递给 data.table 的 CJ

    我有以下代码 main cols lt c num let dt lt data table num 1 5 let letters 1 5 dt new dt lt dt CJ num num let let unique TRUE on
  • 如何防止 XNA 组件在离屏时绘制?

    我正在 XNA 中制作 2d 游戏 使用可绘制游戏组件时 哪一个性能更好 1 当组件不在屏幕上时 将其从组件列表中删除 当组件在屏幕上时 将其添加 2 当其离屏时 不运行其绘制函数 通过使用 awake 布尔字段和 if 语句围绕绘图函数中
  • 测量服务器请求后 JSF 视图的呈现时间

    我想测量 JSF 应用程序的渲染时间 由于我的权力原因 应用程序无法填充日志 因此 我的问题是 有什么方法可以在使用任何浏览器执行包括后端 服务器 调用的特定操作后测量应用程序的渲染时间 到目前为止 在使用 Chrome 开发者工具后 我发
  • 如何从QVariant获取原始python数据

    这几天正在学习python和Qt 所以请考虑这将是一个新手问题 但我被困在这里 import sys from PyQt4 QtCore import data1 string data2 QVariant data1 data3 data
  • DirectUI 的真相是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个 Windows 桌面应用程序 它需要一个很棒的 UI 我现在使用Visual Studio和MFC 后来听说DirectU
  • 如何获取 MySQL 数据库的最后访问(和/或写入)时间?

    如何查明 MySQL 数据库上次读取或写入的时间 您甚至可以对每张桌子进行检查吗 SELECT UPDATE TIME FROM INFORMATION SCHEMA TABLES WHERE TABLE SCHEMA dbname AND
  • 托管和非托管 C++/MFC 可以混合在一个 dll 中吗?

    以前 我们有 MFC VC6 VB6 和 C 应用程序中的软件 需要调用用 C 和 MFC 编写的相同引擎 该引擎需要 C 来提高速度 当时我们决定使用 COM 作为接口 因为所有三个都可以使用它 并且在编组等方面的问题最少 我们的 MFC
  • 在 SQL Server 中存储图像?

    我制作了一个小型演示网站 并在其上将图像存储在 sql 服务器上的图像列中 我有几个问题是 这是一个坏主意吗 当我的网站增长时 它会影响性能吗 另一种方法是将图像存储在光盘上 并且仅将图像的引用存储在数据库中 这想必是很多人都曾遇到过的共同
  • 使用 docker-compose 将 Gitlab CI/CD 转至 Digital Ocean 以实现多个存储库

    目前我在 Gitlab 中有一个项目 repo 它是一个角度应用程序 我使用 Gitlab CI CD 来构建 测试 发布和部署 发布将构建一个新的 docker 镜像 将其推送到 Gitlab 注册表 然后将其部署到我的 Digital