2015-10-26 8 views
5

Ho iniziato con un'immagine di base errordeveloper/oracle-jdk. Questo Dockerfile è mostrato qui per riferimento:Alpine Linux gestisce i certificati in modo diverso rispetto a 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" ] 

vorrei spostare questo Alpine Linux, quindi un fatto le seguenti modifiche:

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

Principalmente ho cambiato lo strumento di gestione dei pacchetti per tirare giù ricciolo e ca-certificati.

Dopo aver confermato l'originale si basa sulla mia macchina pulita (lo fa) ho provato la mia versione e ottenuto questo errore: (ho spento --silent sul curl per vederlo)

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 

fa alpino fare qualcosa di diverso qui? Perché il mio ricciolo/certs potrebbe fallire?

+0

piuttosto vecchio, ma hai provato anche un PEM? – Andreas

risposta

13

solo per essere sicuri i certificati CA vengono creati/aggiornati in cui si suppone che, provare e aggiungere (dopo this answer) update-ca-certificates:

apk add ca-certificates 
update-ca-certificates 

Nel tuo caso:

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

Che ha prodotto questo errore: ATTENZIONE: ca-certificates.crt non contiene esattamente un certificato o CRL: saltando – Greg

+0

Confronto tra Alpine e Busybox Notiamo anche che Busybox ha libs nss e Alpine no. Non sono sicuro che sia importante, quindi ho aggiunto nss come un altro 'add'. Sfortunatamente non ci sono nemmeno dadi. – Greg

+0

@Greg Stai utilizzando Alpine 3.2? (perché questo dovrebbe essere corretto in 3.2: https://github.com/gliderlabs/docker-alpine/issues/30) – VonC

Problemi correlati