docker 如何刷新bower包证书?

kmynzznz  于 2023-04-29  发布在  Docker
关注(0)|答案(4)|浏览(250)

在构建Docker容器时,我遇到了这个错误
Step 6/17 : RUN bower install --allow-root ---> Running in 20f9229dcd1e bower angular-touch#~1.5.0 CERT_HAS_EXPIRED Request to https://registry.bower.io/packages/angular-touch failed: certificate has expired
建立这个形象是工作正常约2年,然后突然拒绝合作。如何刷新丢失的证书?

vcudknz3

vcudknz31#

你可能都在使用一个基于旧节点docker镜像的“非常旧”的构建堆栈,它使用旧的Debian发行版作为其基础镜像(即。例如node:6 =〉Debian Stretch)。
看起来是www. example的letsencrypt证书 www.example.com .这在较旧的Debian发行版中是不可用的/已知的。
当然,现在是时候升级堆栈了,但与此同时,你可以将其添加到你的Dockerfile中,就在你做bower install之前,作为一个变通方法:

# manually remove expired letsencrypt X3 certificate and install the new ISRG X1 root CA 
RUN mkdir -p /usr/share/ca-certificates/letsencrypt/ \
  && cd /usr/share/ca-certificates/letsencrypt/ \
  && curl -kLO https://letsencrypt.org/certs/isrgrootx1.pem \
  && perl -i.bak -pe 's/^(mozilla\/DST_Root_CA_X3.crt)/!$1/g' /etc/ca-certificates.conf \
  && update-ca-certificates

然后使用此标志告诉bower使用系统范围的CA系统:

RUN NODE_OPTIONS=--use-openssl-ca bower install ...
ykejflvf

ykejflvf2#

在我的例子中,我只添加了两行。鲍氏锉

"strict-ssl": false,
"https-proxy": "",

这是一种变通方法,而且是一种糟糕的做法。但是使用bower和过时的插件也是不好的做法

gmxoilav

gmxoilav3#

我从昨天开始就犯了这些错误。我解决了如下:如果你有你的依赖在鲍尔。json像这样:

"dependencies": {
    "bootstrap-sass": "3.2.0",
    "jquery": "2.2.0",
...
}

然后将其更改为:

"dependencies": {
    "bootstrap-sass": "https://github.com/twbs/bootstrap-sass.git#3.2.0",
    "jquery": "https://github.com/jquery/jquery.git#2.2.0",
...
}

使用指定的版本和git url。你可以在这里找到所有bower包的git url:https://registry.bower.io/packages

qzwqbdag

qzwqbdag4#

bower install仍然适用于较新版本的node。从我注意到的,证书停止工作的版本6,7和8。
作为解决方法:只有bower install命令我在较新的节点(例如12)上执行,其余用于构建项目的命令我在所需的版本上执行。
它在我们的项目中起作用了。

相关问题