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

时间:2020-09-16 09:11:09

标签: node.js docker gitlab gitlab-ci yarnpkg

在基于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.crt添加到管道的script部分时,它可以正常工作而没有问题,这意味着

  1. 我的图像构建正确,因为它的证书位于正确的位置,并且如果手动添加也可以使用
  2. 以某种方式,配置不会从映像持久化到管道

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

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

1 个答案:

答案 0 :(得分:0)

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