来自 docker 映像的命令未传递到管道

Posted

技术标签:

【中文标题】来自 docker 映像的命令未传递到管道【英文标题】:Command from docker image not passed through to pipeline 【发布时间】:2021-01-03 02:15:29 【问题描述】:

在基于node:12 的图像的Dockerfile 中,我有以下几行来添加自签名证书

RUN apt-get update && apt-get -yqq install ca-certificates
RUN mkdir -p /usr/local/share/ca-certificates/domain
COPY .docker/cert.crt /usr/local/share/ca-certificates/domain/
RUN update-ca-certificates --fresh

RUN yarn config set cafile /usr/local/share/ca-certificates/domain/cert.crt

当我也添加RUN yarn config list时,我可以看到这个设置已经添加成功。之后,我构建并将我的图像推送到注册表。

但是现在,当我在 .gitlab-ci.yml 中使用它并使用 yarn install 时,我收到一条错误消息,指出链中存在自签名证书。

当我在管道中使用yarn config list 时,它不会显示cafile,就好像没有使用图像中设置的设置一样。

当我将yarn config set cafile /usr/local/share/ca-certificates/domain/cert.crt 添加到管道的script 部分时,它可以正常工作,这意味着

    我的图像构建正确,因为它的证书位于正确的位置,并且如果手动添加它就可以工作 不知何故,配置不会从映像持久化到管道

我检查了Dockerfile https://github.com/nodejs/docker-node/blob/master/12/stretch/Dockerfile 并且没有用户集,这可能意味着它在不同的用户下运行,是吗?

为什么已经在镜像中添加了证书就不行了?

【问题讨论】:

【参考方案1】:

来自 Dockerfile 的命令不会影响主机,只会影响映像。如果您将此图像用作您的工作图像,则无需重新设置。

【讨论】:

以上是关于来自 docker 映像的命令未传递到管道的主要内容,如果未能解决你的问题,请参考以下文章

GCE 未正确部署 GCR 映像

原始 IP 未传递到 AWS Elastic Beanstalk 上的单个容器 Docker 映像上的容器

AWS Elastic Beanstalk Docker 来自 ECR 错误“Dockerrun.aws.json 中未指定 Docker 映像”

在 Visual Studio 中使用相同的 docker 文件构建 docker 映像的 Azure Pipeline 失败

将字符串的 CLA 传递到 Docker 映像中 - Python

Docker - 无法连接到正在运行的映像