多容器应用如何使用Gitlab的Auto DevOps?
How to use Gitlab's Auto DevOps for multi-container application?
我有一个多容器应用程序,使用 nginx 作为 Web 服务器和反向代理,以及一个简单的 'Hello World' Streamlit 应用程序。
它在 my Gitlab.
上可用
我是 DevOps 的新手,因此想利用 Gitlab's Auto DevOps 来简化它。
默认情况下,Gitlab 的 Auto DevOps 只需要一个 Dockerfile,并且位于项目的根目录 (source)
令人惊讶的是,我只在我的多容器用例中找到了一个旨在回答这个问题的资源:https://forum.gitlab.com/t/auto-build-for-multiple-docker-containers/46949
我听从了建议,只对我的 dockerfiles 路径的 .gitlab-ci.yml
做了细微的改动。
但是我遇到了 Dockerfiles 无法识别其文件夹中的文件的问题:
应用程序的 Dockerfile 找不到 requirements.txt
:
并且 Nginx 的 Dockerfile 没有找到 project.conf
DOCKERFILE_PATH: src/nginx/Dockerfile
变量似乎只提供对 Dockerfile 本身的访问权限,但不理解此路径作为构建位置。
我如何自定义此 .gitlab-ci.yml
以便构建正确通过?
非常感谢!
找不到文件的原因是 docker 的上下文工作方式。由于您 运行ning docker 从根目录构建,因此您的上下文将位于根目录中,而不是来自 docker 文件的路径。这意味着您的 docker 构建命令正在尝试查找 /requirements.txt
而不是 src/app/requirements.txt
。您可以通过在 运行 docker 构建之前执行 cd
更改到您的 /src/app
目录并从docker 构建(因为您不再需要指定文件夹)。
由于每个作业都在一个独立的容器中执行,您无需担心 CD 回到您的构建根目录,因为您的作业永远不会 运行s 任何其他非 docker 命令。
我有一个多容器应用程序,使用 nginx 作为 Web 服务器和反向代理,以及一个简单的 'Hello World' Streamlit 应用程序。
它在 my Gitlab.
我是 DevOps 的新手,因此想利用 Gitlab's Auto DevOps 来简化它。
默认情况下,Gitlab 的 Auto DevOps 只需要一个 Dockerfile,并且位于项目的根目录 (source)
令人惊讶的是,我只在我的多容器用例中找到了一个旨在回答这个问题的资源:https://forum.gitlab.com/t/auto-build-for-multiple-docker-containers/46949
我听从了建议,只对我的 dockerfiles 路径的 .gitlab-ci.yml
做了细微的改动。
但是我遇到了 Dockerfiles 无法识别其文件夹中的文件的问题:
应用程序的 Dockerfile 找不到 requirements.txt
:
并且 Nginx 的 Dockerfile 没有找到 project.conf
DOCKERFILE_PATH: src/nginx/Dockerfile
变量似乎只提供对 Dockerfile 本身的访问权限,但不理解此路径作为构建位置。
我如何自定义此 .gitlab-ci.yml
以便构建正确通过?
非常感谢!
找不到文件的原因是 docker 的上下文工作方式。由于您 运行ning docker 从根目录构建,因此您的上下文将位于根目录中,而不是来自 docker 文件的路径。这意味着您的 docker 构建命令正在尝试查找 /requirements.txt
而不是 src/app/requirements.txt
。您可以通过在 运行 docker 构建之前执行 cd
更改到您的 /src/app
目录并从docker 构建(因为您不再需要指定文件夹)。
由于每个作业都在一个独立的容器中执行,您无需担心 CD 回到您的构建根目录,因为您的作业永远不会 运行s 任何其他非 docker 命令。