node.js - 来自 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.crt
到script
管道的一部分时,它可以正常工作,这意味着
- 我的图像是正确构建的,因为它在正确的位置有证书,并且如果手动添加它就可以工作
- 不知何故,配置不会从图像持久化到管道
我检查了Dockerfile
https://github.com/nodejs/docker-node/blob/master/12/stretch/Dockerfile并且没有用户集,这可能意味着它在不同的用户下运行,是吗?
为什么已经在图像中添加证书时它不起作用?
解决方案
来自 Dockerfile 的命令不会影响主机,只会影响映像。如果您将此图像用作工作图像,则无需再次设置。
推荐阅读
- java - 当我想拦截一个方法时,我只能使用接口子类吗?
- maven - Spring Boot - 抛出异常 jar 不存在
- regex - 雪花:REGEX_SUBSTR 给出空值?
- netbeans - NetBeans 创建数据库连接被拒绝
- r - 在 R 中使用 plotly 绘制每个县的数据而不使用地理编码
- tensorflow - Tensorflow 有界回归与分类
- angular - Angular/Aggrid:将此 GET 请求功能转换为服务的正确方法?
- netflix-zuul - Zuul 在从 Angular 发出异步请求时删除为少数请求添加的标头
- python-3.x - 在使用 boto3 列出 S3 对象时强制 AWS Lambda 使用 UTC
- javascript - 如何使用 Moment.js 获取 *real* 日期?