设置 GitLab CI/CD 以将多个存储库部署到 DigitalOcean Droplet 上的 Docker 容器

     2023-02-19     169

关键词:

【中文标题】设置 GitLab CI/CD 以将多个存储库部署到 DigitalOcean Droplet 上的 Docker 容器【英文标题】:Set up GitLab CI/CD for deploying multiple repositories to Docker containers on a DigitalOcean Droplet 【发布时间】:2021-08-26 20:59:13 【问题描述】:

我对 Docker 和 DigitalOcean Droplets 的概念非常陌生。我创建了一个在 Ubuntu 20.04 上运行 Docker 19.03.12 的 DigitalOcean Droplet。

我目前在 GitLab 上有三个存储库:

两个 Node.js 服务器 一个 Vue.js 前端

我想完成以下工作:

为每个存储库设置 CI/CD 管道,将每个应用程序部署到我的 DigitalOcean Droplet 上的 docker 容器中。

这就是我正在努力解决的问题:

每个项目的 Dockerfile 包含什么? 我的 GitLab CI 脚本包含什么? 由于我的 DigitalOcean Droplet 有一个公共 IP 地址,我如何将三个单独的应用程序部署到该 IP 地址并仍然能够访问它们?通过将它们部署到不同的端口号?

我已尝试按照https://www.digitalocean.com/community/tutorials/how-to-set-up-a-continuous-deployment-pipeline-with-gitlab-ci-cd-on-ubuntu-18-04 的教程进行操作,但它并不完全符合我的要求,因为它仅适用于一个应用程序。本教程还关注一个静态 HTML 文件。就我而言,我需要将两个 Node 应用程序和一个 Vue 应用程序 docker 化。

抱歉,信息不足,这是我能够以我的(有限)知识提供的最多上下文。

【问题讨论】:

【参考方案1】:

有两种可能性,一种是在您的 Droplet 上使用三个 docker 容器,它们可以相互通信。听上去你可能会考虑(基于“部署每个应用程序的每个存储库”“每个项目的 Dockerfile 包含什么”

另一种选择是拥有一个包含所有三个 repos 的容器,我认为这对你来说可能是一个更好的解决方案(但两者都有优点)。

好处是后者可能会简单一些。

这个想法是这三个 repos 都不需要 dockerfile(无论如何都用于部署)

相反,您创建了一个只有 Dockerfile.gitlab-ci.yml 文件的第四个 repo。该 dockerfile 将拉取其他三个 repos 并使它们成为同一映像的一部分,因此它们可以作为一个容器在您的 droplet 上运行。然后,您的其他三个 repo 中的每一个都将与您的第 4 个 repo 挂钩,这将通知那个 repo 生成图像。

如果您需要访问所有三个应用程序,您可能需要三个单独的端口来运行。

但请注意,vue 前端也需要提供服务,因此您可以使用其中一台服务器将 vue 应用程序作为平面文件提供服务,并为其托管 api。

【讨论】:

如何使用 gitlab-ci 作业推送到 gitlab 存储库?

...4【问题描述】:我是GitLabCI/CD作业的新手,但我正在尝试设置一个Python脚本,该脚本在推送到GitLab时会触发CI/CD作业以运行它,并调用再次推送到GitLab的内部函数前提是满足某些标准。因此,例如,假设我有以下 查看详情

在哪里指定 GitLab ci/cd 管道的存储库凭据?

】在哪里指定GitLabci/cd管道的存储库凭据?【英文标题】:WheretospecifycredentialsoftherepositorytoGitLabci/cdpipeline?【发布时间】:2021-11-1704:53:39【问题描述】:我已在我的系统中安装了最新版本的SonarQube,并成功地将SonarQube与GitLab集成... 查看详情

为我的 GitLab-Server 上的每个存储库激活 CI/CD 管道

】为我的GitLab-Server上的每个存储库激活CI/CD管道【英文标题】:ActivateCI/CDpipelinesforeveryrepoonmyGitLab-Server【发布时间】:2021-07-3116:12:14【问题描述】:我希望GitLab-Server上的每个存储库都有一个特定的CI/CD管道。git/GitLab支持这样的... 查看详情

我应该将我的 Nuxt 应用程序直接部署到 Google App Engine 还是应该在我的代码存在于存储库中的地方使用 Gitlab CI/CD?

...gleAppEngine还是应该在我的代码存在于存储库中的地方使用GitlabCI/CD?【英文标题】:ShouldIdeploymyNuxtappdirectlytoGoogleAppEngineorshouldIuseGitlabCI/CDwheremycodeispresentinrepository?【发布时间】:2021-08-1714:45:57【问题描述】:我想将我的nuxt应 查看详情

基于gitlab的ci/cd系统重点记要

参考技术AGitlab是套功能完善的源码管理系统,平时用于公司内部各研发组的源码同步、问题跟踪、开发协同。Gitlab自带的CI/CD功能与Gitlab更简单、灵活的协同工作,也减小了日常维护的压力,因此,本文针对Gitlab的CI/CD功能做的... 查看详情

Azure 部署中心的 CI/CD 失败,因为存储库名称必须小写

】Azure部署中心的CI/CD失败,因为存储库名称必须小写【英文标题】:CI/CDfromAzureDeploymentCenterfailingbecausereponamemustbelowercase【发布时间】:2021-11-0803:43:30【问题描述】:我在6个月前使用GitHubCI/CD配置了一个应用服务,它运行良好。... 查看详情

使用 GitLab CI/CD 等 GitHub 操作

】使用GitLabCI/CD等GitHub操作【英文标题】:UsingGitHubactionslikeGitLabCI/CD【发布时间】:2020-09-0915:41:34【问题描述】:我刚刚开始将我所有的GitLab存储库迁移到GitHub。我有一段时间没有使用GitHub,所以我偶然发现了-至少对我来说是新... 查看详情

用于 Maven 部署的 Gitlab CI/CD 的适当阶段是啥?

】用于Maven部署的GitlabCI/CD的适当阶段是啥?【英文标题】:whataretheproperstagesforGitlabCI/CDforamavendeploy?用于Maven部署的GitlabCI/CD的适当阶段是什么?【发布时间】:2021-07-3107:12:44【问题描述】:我正在将GitlabCI/CD用于Java/Maven项目,并... 查看详情

Gitlab CI/CD - 用户和权限最佳实践

...:06【问题描述】:我正在尝试查找一些指南或文档来讨论设置gitlabCI/CD以自动部署Web服务器(nginx)/Centos或任何Linux的最佳实践。将CI/CD设置为root用户很容易,但我不喜欢在gitlab中拥有root密钥的想法。如果我 查看详情

Gitlab CI/CD 不会运行我的部署阶段

】GitlabCI/CD不会运行我的部署阶段【英文标题】:GitlabCI/CDwillnotrunmydeploystage【发布时间】:2021-11-3009:23:05【问题描述】:GitlabCI/CD新手。我的构建工作运行良好,但部署工作从未执行。我删除了所有规则,但它仍然没有运行。这... 查看详情

配置 Lerna 以将 NPM 包发布到私有 Gitlab 存储库

...某些应用程序共享的包的单一存储库。我按照Lerna的文档设置了一个项目,这是文件结构:-lernatest/-lerna.json-packa 查看详情

Gitlab CI/CD 到 Digital Ocean 使用 docker-compose 进行多个 repos

】GitlabCI/CD到DigitalOcean使用docker-compose进行多个repos【英文标题】:GitlabCI/CDtoDigitalOceanformultiplereposusingdocker-compose【发布时间】:2020-10-3016:25:57【问题描述】:目前我在Gitlab中有一个项目(repo),它是一个Angular应用程序。我正在使... 查看详情

gitlabci/cd自动部署方案探索

  如上图所示,当我们提交代码到GitLab仓库后,满足指定条件后就会触发Pipeline进行自动化构建、测试、发布等。Gitlabgitlab是做代码的版本管理,gitlab本身就用CI/CD的功能,原定是使用gitlab+Jenkins+Docker的流行部署框架的,... 查看详情

如何使用gitlab和rancher构建ci/cd流水线–part1

介绍GitLab核心是集成管理Git存储库的工具。比如你希望创建一个提供服务的平台,那么GitLab将提供强大的身份验证和授权机制、工作组、问题跟踪、wiki和片段,除此之外还有公有、内部和私有存储库。GitLab强大之处在于,它包... 查看详情

还在用jenkins?试试gitlab的ci/cd功能吧(代码片段)

...化打包部署,一般都需要借助Jenkins。不过,现在Gitlab的CI/CD功能也能实现自动化部署,并且操作更加简单。如果你也正在使用Gitlab作为Git仓库的话,不妨试试它的CI/CD功能。一、安装通过Gitlab的CI/CD功能实现自动化... 查看详情

gitlabci/cd配置-并发送消息到飞书

...运行作业(Jobs)的应用程序。打开你的gitlab项目,找到设置-CI/CD-Runner。)其他请参考https://docs.gitlab.com/runner/register/然后按问题输入上图红框的内容。tag可以不填。刷新页面,出现此项目已激活的Runner表示注册成功。在项目根目... 查看详情

GitLab CI/CD 脚本改进

】GitLabCI/CD脚本改进【英文标题】:GitLabCI/CDScriptImprovement【发布时间】:2021-10-1411:43:47【问题描述】:下面是我的第一个静态网站的gitlab-ci.yml脚本。它正是我需要的。它不需要每个Angular或React的构建过程。有没有人看到改进的... 查看详情

如何解决“远程:您不允许上传代码”。 GitLab CI/CD 作业出错?

】如何解决“远程:您不允许上传代码”。GitLabCI/CD作业出错?【英文标题】:Howtosolvethe"remote:Youarenotallowedtouploadcode."erroronGitLabCI/CDjob?【发布时间】:2018-12-2710:26:58【问题描述】:我目前正在尝试使用GitLab运行CI/CD作业,... 查看详情