मेरे पास एक डॉकरफाइल है जो कुछ पर्यावरण चर घोषित करता है जिनका उपयोग बाद में प्रवेश बिंदु में किया जा रहा है, लेकिन प्रवेश बिंदु कभी भी उन चरों के मूल्यों को नहीं उठाता है। मैंने खोल फॉर्म की कोशिश की लेकिन ऐसा लगता है कि यह कुछ भी नहीं कर रहा है। यहाँ मेरा नमूना dockerfile है: -

FROM java:8
ENV JAVA_OPTS="
RUN apt-get -y install ca-certificates curl
RUN mkdir /app
RUN mkdir /docker
CMD ["java", "-version"]
ADD /target/app.jar /app/app.jar
ENV spring.profiles.active dev
ENV encryptor.password xyz
COPY entrypoint.sh /docker/entrypoint.sh
RUN ["chmod", "+x", "/docker/entrypoint.sh"]
EXPOSE 8080
ENTRYPOINT ["/bin/bash", "-c", "/docker/entrypoint.sh"]
CMD ""

My entrypoint.sh बहुत ही सरल है और इन ENV वेरिएबल्स का उपयोग करता है: -

#!/bin/bash
java -Djava.security.egd="file:/dev/./urandom" -Dencryptor.password=$encryptor.password -Dspring.profiles.active=$spring.profiles.active -jar /app/app.jar

मुझे अपने ENTRYPOINT को Dockerfile में पहले घोषित किए गए उन ENV चरों तक पहुँचने में सक्षम होने के लिए कैसे बनाना चाहिए ताकि यह पारित किए गए तर्कों के लिए उपयुक्त मान निर्दिष्ट करने में सक्षम हो। इंटरनेट पर कई पोस्ट और सामान के माध्यम से चला गया और इसे प्राप्त करने के लिए बहुत सारे तरीके आजमाए। काम किया, लेकिन एक बार भी काम नहीं किया।

0
Ashley 31 जुलाई 2019, 02:55

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि एक मुद्दा पर्यावरण चर नामों के भीतर की अवधि (डॉट्स) है। मुझे लगता है, मान्य पहचानकर्ताओं में केवल अल्फ़ान्यूमेरिक वर्ण और अंडरस्कोर शामिल हो सकते हैं।

आपको एक शेल प्राप्त करने के लिए ENTRYPOINT के शेल फॉर्म का भी उपयोग करना होगा जो पर्यावरण चर प्रतिस्थापन कर सकता है:

FROM busybox

ENV spring_profiles_active dev
ENV encryptor_password xyz

ENTRYPOINT echo ${spring_profiles_active} ${encryptor_password}

फिर:

docker build --tag=example --file=./Dockerfile .
docker run --interactive --tty example

रिटर्न:

dev xyz
2
DazWilkin 31 जुलाई 2019, 04:46