【问题标题】:How to use Gitlab's Auto DevOps for multi-container application?如何将 Gitlab 的 Auto DevOps 用于多容器应用程序?
【发布时间】:2022-01-05 02:04:47
【问题描述】:

我有一个多容器应用程序,使用 nginx 作为 Web 服务器和反向代理,以及一个简单的 'Hello World' Streamlit 应用程序。
它可以在my Gitlab 上找到。

我是 DevOps 的新手,因此想利用 Gitlab's Auto DevOps 来简化它。
默认情况下,Gitlab 的 Auto DevOps 只需要一个 Dockerfile,并且位于项目的根目录(source)
令人惊讶的是,我只在我的多容器用例中找到了一个旨在回答这个问题的资源:@​​987654324@
我听从了建议,对我的 dockerfile 路径的 .gitlab-ci.yml 做了细微的更改。

但是我遇到了 Dockerfiles 无法识别其文件夹中的文件的问题: 应用程序的 Dockerfile 找不到 requirements.txt

Nginx 的 Dockerfile 没有找到 project.conf

似乎DOCKERFILE_PATH: src/nginx/Dockerfile 变量本身只提供对 Dockerfile 的访问权限,但不将此路径理解为构建的位置。
如何自定义此 .gitlab-ci.yml 以便构建正确通过?
非常感谢!

【问题讨论】:

    标签: docker gitlab gitlab-ci gitlab-autodevops


    【解决方案1】:

    找不到文件的原因是由于 docker 的上下文是如何工作的。由于您是从根目录运行 docker build,因此您的上下文将位于根目录中,而不是来自 dockerfile 的路径。这意味着您的 docker build 命令正在尝试查找/requirements.txt 而不是src/app/requirements.txt。您可以通过在运行 docker build 之前执行 cd 以更改到您的 /src/app 目录并从您的 docker build 中删除 -f 标志(因为您不再需要指定文件夹)来相对轻松地解决此问题。

    由于每个作业都在一个隔离的容器中执行,因此您无需担心 CD 回到您的构建根目录,因为您的作业从不运行任何其他非 docker 命令。

    【讨论】:

      猜你喜欢
      • 2021-05-02
      • 2019-11-11
      • 2022-01-23
      • 1970-01-01
      • 2020-06-24
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      相关资源
      最近更新 更多