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



我对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容器。听上去,这就是你可能会考虑的(基于"部署每个应用程序的每个存储库">"每个项目的Dockerfile包含什么">(

另一种选择是用一个容器来容纳所有三个回购,我认为这对你来说可能是一个更好的解决方案(但两者都有好处(。

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

这个想法是,三个repo都不需要一个dockerfile(无论如何都要部署(

相反,您创建了一个只有Dockerfile.gitlab-ci.yml文件的第四个repo。该dockerfile将提取其他三个repo,使它们成为同一图像的一部分,这样它们就可以作为一个容器在你的液滴上运行。然后,你的其他三个回购中的每一个都会有一个挂钩到你的第四个回购,这将通知该回购生成图像。

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

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

最新更新