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

Set up GitLab CI/CD for deploying multiple repositories to Docker containers on a DigitalOcean Droplet

我对 Docker 和 DigitalOcean Droplets 的概念很陌生。我创建了一个在 Ubuntu 20.04.

上运行 Docker 19.03.12 的 DigitalOcean Droplet

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

我想完成以下任务:

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

我尝试按照 https://www.digitalocean.com/community/tutorials/how-to-set-up-a-continuous-deployment-pipeline-with-gitlab-ci-cd-on-ubuntu-18-04 上的教程进行操作,但它不太符合我的要求,因为它仅适用于一个应用程序。本教程还重点介绍了一个静态 HTML 文件。在我的例子中,我需要 dockerize 两个 Node 应用程序和一个 Vue 应用程序。

抱歉缺少信息,这是我能以(有限的)知识提供的最多的背景信息。

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

另一种选择是使用一个容器来容纳所有三个存储库,我认为这对您来说可能是更好的解决方案(但两者都有优点)。

好处是后者可能简单一点

想法是三个存储库中的 none 需要一个 docker 文件(无论如何用于部署)

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

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

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