2015-10-26 11 views
5

मैंने बेस छवि गलतीकर्ता/ओरेकल-जेडीके के साथ शुरुआत की। यह Dockerfile यहां संदर्भ के लिए दिखाया गया है:क्या अल्पाइन लिनक्स व्यस्त बॉक्स को बसबॉक्स से अलग करता है?

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

मैं तो एक निम्न परिवर्तन किए अल्पाइन लिनक्स को यह स्थानांतरित करने के लिए, चाहते हैं:

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

मुख्य रूप से मैं नीचे खींचने के लिए पैकेज प्रबंधन टूल का बदला कर्ल और सीए प्रमाणपत्र।

मूल की पुष्टि मेरी मशीन पर स्वच्छ बनाता है के बाद (यह होता है) मैं अपने संस्करण की कोशिश की और यह त्रुटि आई: (मैं कर्ल पर बंद कर दिया --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 

करता अल्पाइन करना यहाँ कुछ अलग है? मेरा कर्ल/कर्ट क्यों विफल हो सकता है?

+0

बल्कि वर्ष, लेकिन क्या आपने पीईएम भी कोशिश की? – 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

छोड़ना अल्पाइन और व्यस्तबॉक्स की तुलना में मैं यह भी ध्यान देता हूं कि Busybox में nss libs और अल्पाइन नहीं है। निश्चित नहीं है कि यह महत्वपूर्ण था इसलिए मैंने एनएसएस को एक और 'एड' के रूप में जोड़ा। दुर्भाग्य से उस पर कोई पासा नहीं है। – Greg

+0

@ ग्रेग क्या आप अल्पाइन 3.2 का उपयोग कर रहे हैं? (क्योंकि यह 3.2 में तय किया जाना चाहिए: https://github.com/gliderlabs/docker-alpine/issues/30) – VonC

संबंधित मुद्दे