Docker compose gitlab runner-如何缓存图像而不是每次构建?
我已经设置了gitlab runner,以使用Docker compose gitlab runner-如何缓存图像而不是每次构建?,docker-compose,gitlab,gitlab-ci-runner,Docker Compose,Gitlab,Gitlab Ci Runner,我已经设置了gitlab runner,以使用docker/compose:latest映像来运行一组服务 通过在config.toml中设置pull\u policy=“if not present”,将缓存docker/compose:latest图像,并且每次都不会提取该图像 如何将测试阶段中使用的docker服务设置为使用缓存图像(即使用docker compose-d启动的图像)?我对dind服务有点困惑 .gitlab ci.yml 变量: DOCKER_主机:tcp://docke
docker/compose:latest
映像来运行一组服务
通过在config.toml
中设置pull\u policy=“if not present”
,将缓存docker/compose:latest
图像,并且每次都不会提取该图像
如何将测试阶段中使用的docker服务设置为使用缓存图像(即使用docker compose-d
启动的图像)?我对dind
服务有点困惑
.gitlab ci.yml
变量:
DOCKER_主机:tcp://docker:2375
DOCKER_TLS_CERTDIR:“
DOCKER_驱动程序:覆盖2
CI_注册表:我的docker注册表。本地:5000
图片:
姓名:docker/撰写:最新
服务:
-姓名:docker:dind
命令:[“--unsecure registry=my docker registry.local:5000”]
测试:
阶段:测试
脚本:
-docker compose up-d
/etc/gitlab runner/config.toml
如下所示:
concurrent = 1
check_interval = 0
[[runners]]
name = "user1"
url = "http://gitlab.example.local/"
token = "<MYTOKEN>"
executor = "docker"
[runners.docker]
extra_hosts = ["my-docker-registry.local:192.168.1.100"]
tls_verify = false
tls_verify = false
image = "docker:latest"
privileged = true
disable_cache = false
pull_policy="if-not-present"
volumes = ["/certs/client", "/cache"]
disable_entrypoint_overwrite = false
oom_kill_disable = false
shm_size = 0
[runners.cache]
concurrent=1
检查间隔=0
[[跑步者]]
name=“user1”
url=”http://gitlab.example.local/"
token=“”
执行者=“码头工人”
[runners.docker]
extra_hosts=[“我的docker注册表。本地:192.168.1.100”]
tls_验证=错误
tls_验证=错误
image=“docker:最新版本”
特权=真
禁用缓存=false
pull_policy=“如果不存在”
卷=[“/certs/client”,“/cache”]
禁用\u入口点\u覆盖=false
oom\u kill\u disable=错误
shm_尺寸=0
[runners.cache]
pull_策略仅适用于跑步者自己拉取的图像。即在image:
key(或services[]:name
)中设置的图像
如果在使用docker executor时在作业中使用docker
(例如,在使用docker compose up-d
),则无法利用缓存层,必须首先从注册表中提取图像或从头开始构建
原因是docker GitLab作业中的docker使用docker:dind
服务作为其docker守护进程。此服务每次都会出现一个新状态,因此不会利用缓存的图像,即使运行程序本身缓存了图像
但是,您可以使用--cache from
参数到docker build
从注册表中提取图像并将其用作构建的缓存
脚本:
-docker pull$CI|u注册表|图像:最新| |真
-docker build--cache from$CI\u REGISTRY\u IMAGE:latest--tag$CI\u REGISTRY\u IMAGE:$CI\u COMMIT\u SHA--tag$CI\u REGISTRY\u IMAGE:latest。
当然,您仍然需要每次提取映像,但这可能比构建要快,尤其是当您的映像安装了许多依赖项或编译了大型模块或类似的东西时
有关更多信息,请参阅文档中的部分