2015-10-26 95 views
5

我从一个基础镜像errordeveloper/oracle-jdk开始。这Dockerfile显示在这里以供参考:Alpine Linux是否处理与Busybox不同的证书?

FROM  progrium/busybox 
MAINTAINER Ilya Dmitrichenko <[email protected]> 

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" ] 

我想这个移动到高山的Linux,所以进行了如下修改:

FROM  alpine 
MAINTAINER Ilya Dmitrichenko <[email protected]> 

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" ] 

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

确认原建立清洁我的机器上后,(它)我想我的版本,并得到这个错误:(我关掉--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 

不会做高山这里有什么不同?为什么我的curl/certs会失败?

+0

比较旧,但你是否也尝试过PEM? – Andreas

回答

13

只是可以肯定的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/* 
+4

产生此错误:警告:ca-certificates.crt不包含一个证书或CRL:跳过 – Greg

+0

比较Alpine和Busybox我还注意到Busybox有nss库,Alpine没有。不知道这是否重要,所以我添加了nss作为另一个“添加”。不幸的是没有骰子。 – Greg

+0

@Greg你在使用Alpine 3.2吗? (因为这应该在3.2中修复:https://github.com/gliderlabs/docker-alpine/issues/30) – VonC

相关问题