gpt4 book ai didi

docker - 在 docker runner 上构建并运行镜像,无需推送

转载 作者:行者123 更新时间:2023-12-03 17:09:32 25 4
gpt4 key购买 nike

我有一个 docker 类型的 Gitlab CI runner,以及一个带有 Dockerfile 的 repo,我将使用它来构建我的工件。
我知道我可以分两个阶段完成,一个阶段是使用 docker 构建图像。镜像,将其推送到注册表,以及使用镜像构建工件的一个阶段。
但我不在乎将图像保存在注册表中,我想跳过这一步,只在我的管道中使用 docker 图像而不推送它。
所以我在 .gitlab-ci.yml 中尝试了以下内容, 只是 docker builddocker run :

build-docs:
tags:
- docker
image: docker:stable
stage: build-docs
script:
- docker build -t $IMAGE_TAG .
- docker run --rm $IMAGE_TAG source build
artifacts:
paths:
- build
我的 Dockerfile 有一个入口点,它接受一个源和构建目录,当然我的存储库的源目录中填满了文件
然而, docker run步骤没有找到存储库文件,好像 source目录是空的,但我猜是因为在 docker 镜像中运行 docker 镜像有点奇怪。
如何修复我的运行步骤以便找到文件,或者是否有不同的方法来做我想做的事?

最佳答案

您必须按照 Gitlab DinD limitations doc 中所述,在安装了作业的当前目录的情况下运行作业中的 Docker 容器。 .例如你可以这样做:

script:
- docker build -t $IMAGE_TAG .
# assuming 'source' folder exists at 'path/to/source' in your Git repo
- docker run -v "/builds/$CI_PROJECT_PATH/path/to/source:/path/to/source" $IMAGE_TAG /path/to/source build
在 Docker 中使用 Docker,您的 $IMAGE_TAG然后容器应该有可用的本地构建文件(包括 source 文件夹)

关于docker - 在 docker runner 上构建并运行镜像,无需推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66568320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com