我正在尝试在 Jenkins 节点上使用 Kaniko 执行以下 Dockerfile
FROM docker.mycompany.io/adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
COPY app.jar app.jar
RUN mkdir /some-directory
但我收到错误
mkdir: can't create directory '/some-directory': File exists
我已经检查了基本图像(
adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
),我可以看到/some-directory
不存在,所以我不确定为什么kaniko告诉我目录已经存在。
我正在使用以下 Kaniko 命令
/kaniko/executor /
--context dir://myproject/src/main/docker /
--dockerfile myproject/src/main/docker/Dockerfile /
--destination mo-docker-staging.docker.mycompany.io/foo/myproject:111.222.333 /
--registry-certificate mo-docker-staging.docker.mycompany.io=/etc/ssl/certs/mycompany.crt /
--verbosity=debug /
--cache=true
事实证明,Kaniko 命令实际上在干净的 Jenkins 节点上第一次成功,只有在同一个 Jenkins 节点上第二次/后续执行时,mkdir 才会失败,所以当错误发生时,我似乎有一个脏的 kaniko 文件系统。
我通过向 Kaniko 命令添加
--cleanup
和 --cache=false
标志解决了这个问题。
--cache-run-layers=false
标志,但我使用的是较旧版本的 Kaniko,它没有此选项