给定一个使用Gitlab-CI和k8s runner的约35个服务的monorepo。图像是使用Kaniko构建的,利用了原型模板的<job>.extends
,生活很棒。
然而,最近,我们想在consul上保存一个密钥,并在成功构建后更改一个gitlab-ci env-var-这需要curl
,最好是jq
。
我一直在尝试创建以下映像作为映像构建作业的映像:
FROM gcr.io/kaniko-project/executor:debug
RUN mkdir -p /workspace \
&& wget -qO /workspace/curl https://github.com/moparisthebest/static-curl/releases/download/v7.86.0/curl-amd64 \
&& chmod +x /workspace/curl \
&& wget -qO /workspace/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 \
&& chmod +x /workspace/jq
ENV PATH "$PATH:/workspace"
其构建似乎成功。
然而,事实上,当在管道作业中使用时,给定以下脚本:
.build-with-kaniko:
script:
- mkdir -p /kaniko/.docker;
echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":..... > /kaniko/.docker/config.json
- which jq || log no jq;
which curl || log no curl;
- >-
/kaniko/executor
--context $PROJECT_PATH
--dockerfile $DOCKERFILE
--destination ${CI_REGISTRY}/${DOCKER_REPO}:${TAG}
- which jq || log no jq;
which curl || log no curl;
在运行executor
之前,先找到curl
和jq
。
但是在运行了executor
之后-它们就不见了!!<tam-tam-taaaaaaAAAMM!!!> :o
我试着把它们放在几个不同的文件夹:/busibox
,/kaniko
,/workspace
甚至是一个自定义目录/misc
-并且无法让它工作...
我想也许它把它们 Package 成目标图像-但不,它们不在那里。
我还注意到,在使用X1 M12 N1 X构建之后,它们仍然存在(但之后我就没有在注册表上得到我的图像...)。
这是怎么回事?有一个后推清理机制,我应该指示离开这两个文件?
帮助?我必须做些什么才能让Kaniko明白我需要这两个工具?
1条答案
按热度按时间km0tfn4u1#
天哪:捂脸:
我知道我会找到答案后,我张贴的问题...:耸耸肩:
以下是行之有效的方法:
将其声明为新卷:
我从kaniko的当前Dockerfile中得到了线索:调试图像本身(在撰写本文时)。
建议将该图像用作使用kaniko的gitlab-ci作业的基础图像-它包括
/busybox
。我仍然不明白为什么把工具放在
/busybox
目录中不起作用,但我现在得到了一个有效的解决方案,没有时间深入挖掘:悲哀:拜瑞耸耸肩: