【问题标题】:Set up GitLab CI/CD for deploying multiple repositories to Docker containers on a DigitalOcean Droplet设置 GitLab CI/CD 以将多个存储库部署到 DigitalOcean Droplet 上的 Docker 容器
【发布时间】: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 化。

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

【问题讨论】:

    标签: node.js docker vue.js gitlab digital-ocean


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-14
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-07
      • 2021-04-02
      • 2020-12-13
      相关资源
      最近更新 更多