gpt4 book ai didi

docker - Alpine Linux 处理证书的方式与 Busybox 不同吗?

转载 作者:IT老高 更新时间:2023-10-28 12:47:20 28 4
gpt4 key购买 nike

我从一个基本镜像 errordeveloper/oracle-jdk 开始。此处显示此 Dockerfile 以供引用:

FROM        progrium/busybox 
MAINTAINER Ilya Dmitrichenko <errordeveloper@gmail.com>

RUN opkg-install curl ca-certificates

ENV JAVA_HOME /usr/jdk1.8.0_31

RUN curl \
--silent \
--location \
--retry 3 \
--cacert /etc/ssl/certs/GeoTrust_Global_CA.crt \
--header "Cookie: oraclelicense=accept-securebackup-cookie;" \
"http://download.oracle.com/otn-pub/java/jdk/8u31-b13/jdk-8u31-linux-x64.tar.gz" \
| gunzip \
| tar x -C /usr/ \
&& ln -s $JAVA_HOME /usr/java \
&& rm -rf $JAVA_HOME/src.zip $JAVA_HOME/javafx-src.zip $JAVA_HOME/man

ENV PATH ${PATH}:${JAVA_HOME}/bin

ENTRYPOINT [ "java" ]
CMD [ "-version" ]

我想将其移至 Alpine Linux,因此进行了以下更改:

FROM        alpine
MAINTAINER Ilya Dmitrichenko <errordeveloper@gmail.com>

RUN apk --update upgrade && apk add curl ca-certificates && rm -rf /var/cache/apk/*

ENV JAVA_HOME /usr/jdk1.8.0_31

RUN curl \
--silent \
--location \
--retry 3 \
--cacert /etc/ssl/certs/GeoTrust_Global_CA.crt \
--header "Cookie: oraclelicense=accept-securebackup-cookie;" \
"http://download.oracle.com/otn-pub/java/jdk/8u31-b13/jdk-8u31-linux-x64.tar.gz" \
| gunzip \
| tar x -C /usr/ \
&& ln -s $JAVA_HOME /usr/java \
&& rm -rf $JAVA_HOME/src.zip $JAVA_HOME/javafx-src.zip $JAVA_HOME/man

ENV PATH ${PATH}:${JAVA_HOME}/bin

ENTRYPOINT [ "java" ]
CMD [ "-version" ]

主要是我改了包管理工具下拉curl和ca-certificates。

在我的机器上确认原始构建干净后(确实如此),我尝试了我的版本并得到了这个错误:(我在 curl 上关闭了 --silent 以查看它)

Step 4 : RUN curl   --location   --retry 3   --cacert /etc/ssl/certs/GeoTrust_Global_CA.crt   --header "Cookie: oraclelicense=accept-securebackup-cookie;"   "http://download.oracle.com/otn-pub/java/jdk/8u31-b13/server-jre-8u31-linux-x64.tar.gz"     | gunzip     | tar x -C /usr/     && ln -s $JAVA_HOME /usr/java     && rm -rf $JAVA_HOME/man
---> Running in c91e4939f851
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (77) error setting certificate verify locations:
CAfile: /etc/ssl/certs/GeoTrust_Global_CA.crt
CApath: none
gunzip: invalid magic
tar: short read
The command '/bin/sh -c curl --location --retry 3 --cacert /etc/ssl/certs/GeoTrust_Global_CA.crt --header "Cookie: oraclelicense=accept-securebackup-cookie;" "http://download.oracle.com/otn-pub/java/jdk/8u31-b13/server-jre-8u31-linux-x64.tar.gz" | gunzip | tar x -C /usr/ && ln -s $JAVA_HOME /usr/java && rm -rf $JAVA_HOME/man' returned a non-zero code: 1

Alpine 在这里有什么不同吗?为什么我的 curl/certs 会失败?

最佳答案

为了确保 CA 证书在它们应该被创建/更新的位置,尝试添加(在 this answer 之后)update-ca-certificates:

apk add ca-certificates
update-ca-certificates

在你的情况下:

RUN apk --update upgrade && \
apk add curl ca-certificates && \
update-ca-certificates && \
rm -rf /var/cache/apk/*

关于docker - Alpine Linux 处理证书的方式与 Busybox 不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33353532/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com