bounty还有6天到期。回答此问题可获得+200声望奖励。sashoalm希望引起更多关注此问题。
我在Dockerfile中以root身份运行npm时遇到错误。
> [runner 5/10] RUN npm install --global pm2:
#0 71.79 npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY
我们有一个无法关闭的防病毒/企业防火墙,它取代了SSL证书来检查流量。
我的问题是,因为npm install --global pm2
是以root身份运行的,所以它不荣誉export NODE_EXTRA_CA_CERTS=/path/to/my-cacert.crt
。
我尝试了RUN npm config set cafile /path/to/my-cacert.crt
,但由于某种原因也不起作用。
在docker容器中以root身份运行npm时,如何修复UNABLE_TO_GET_ISSUER_CERT_LOCALLY
?
这个dockerfile重现了这个问题:
FROM node:alpine AS deps
COPY my.crt /usr/local/share/ca-certificates/
RUN cat /usr/local/share/ca-certificates/my.crt >>/etc/ssl/certs/ca-certificates.crt
RUN npm install --global pm2
1条答案
按热度按时间oug3syen1#
如果你把你的Dockerfile贴出来,它会很有帮助,
但你有很多选择
1-而不是使用
export
设置你的NODE_EXTRA_CA_CERTS
与ARG
选项在dockerfile,它将用于所有用户不要紧,如果你改变你的用户之间的构建像这样:但是如果你用
export
设置一个变量,它将只用于你使用export
的RUN
条目。记住,如果你正在进行多阶段构建,ARG
的范围是他们的阶段,如果你需要在不同的阶段设置这个,你必须在每个阶段使用你的ARG
。2-使用http而不是https(它不安全但可用)。您可以在配置中设置它,如下所示:
npm config set registry http://registry.npmjs.org/
3-将您的CA证书添加到Dockerfile中的受信任证书,如: