首页 > 解决方案 > 来自 docker 映像的命令未传递到管道

问题描述

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

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.crtscript管道的一部分时,它可以正常工作,这意味着

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

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

为什么已经在图像中添加证书时它不起作用?

标签: node.jsdockergitlabgitlab-ciyarnpkg

解决方案


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


推荐阅读