gpt4 book ai didi

docker - CI脚本作业之前如何在推送时重建Docker镜像

转载 作者:行者123 更新时间:2023-12-02 19:11:11 25 4
gpt4 key购买 nike

我想在GitLab CI脚本中生成Dockerfile并进行构建。然后在构建作业中使用此新生成的镜像。我怎样才能做到这一点?尝试使用全局before_script,但是它已经在默认容器中启动。我需要从任何容器中执行此操作。

最佳答案

before_script在每个作业之前运行,因此它不是您想要的。但是您可以首先进行镜像构建,并利用每个job可以使用不同的Docker镜像这一事实。图像的构建包含在manual中。

选项A(嗯...还可以)

有2个赛跑者,一个带有shell执行程序(标记为shell),另一个带有Docker执行程序(标记为docker)。然后,您将进入第一个阶段,致力于构建docker镜像。它将使用 shell 运行器。

image_build:
stage: image_build
script:
- # create dockerfile
- # run docker build
- # push image to a registry
tags:
- shell

然后,第二个作业将使用带有docker executor的运行程序运行,并使用此创建的镜像:
job_1:
stage: test
image: [image you created]
script:
- # your tasks
tags:
- docker

这样做的问题是,运行程序将需要成为具有 安全隐患的docker组的一部分。

选项B(更好)

第二个选项将执行相同的操作,但使用Docker executor只能运行一个运行程序。 Docker镜像将在运行容器中构建(gitlab / dind:latest镜像)=“ docker in docker”解决方案。
stages:
- image_build
- test

image_build:
stage: image_build
image: gitlab/dind:latest
script:
- # create dockerfile
- # run docker build
- # push image to a registry

job_1:
stage: test
image: [image you created]
script:
- # your tasks

关于docker - CI脚本作业之前如何在推送时重建Docker镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37194898/

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