docker कई तर्कों के साथ --build-arg के साथ निर्माण करते हैं


193

प्रलेखन के अनुसार , ध्वज के लिए कई आर्ग को परिभाषित करना संभव है --build-arg, लेकिन मुझे यह पता नहीं चल सकता है कि कैसे। मैंने निम्नलिखित कोशिश की:

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5 number_of_replicas=2 --no-cache .

=> यह एक त्रुटि देता है।

मैंने भी कोशिश की:

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5,number_of_replicas=2 --no-cache .

=> यह एक वैरिएबल सेट करता है, number_of_shardsमान के लिए "5, number_of_replicas = 2"

किसी भी विचार मैं कई तर्कों को कैसे परिभाषित कर सकता हूं?

जवाबों:


356

उपयोग --build-argप्रत्येक तर्क के साथ ।

यदि आप दो तर्क दे रहे हैं तो --build-argप्रत्येक तर्क के साथ जोड़ें :

docker build \
-t essearch/ess-elasticsearch:1.7.6 \
--build-arg number_of_shards=5 \
--build-arg number_of_replicas=2 \
--no-cache .

62
इसे साफ़ करने के लिए धन्यवाद। इस --helpपर विशेष रूप से भ्रामक है --build-arg list:। यह एक सूची नहीं है!
काउलिनेटर

91

Pl_rock द्वारा उपर्युक्त उत्तर सही है, केवल एक चीज जो मैं जोड़ूंगा, वह यह है कि डॉकफर्इल के अंदर एआरजी की अपेक्षा करें यदि आपके पास उस तक पहुंच नहीं होगी। तो अगर आप कर रहे हैं

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5 --build-arg number_of_replicas=2 --no-cache .

फिर डॉकरफाइल के अंदर आपको जोड़ना चाहिए

ARG number_of_replicas
ARG number_of_shards

मैं इस समस्या में चल रहा था, इसलिए मुझे आशा है कि मैं भविष्य में किसी (स्वयं) की मदद करूंगा।


6
आपने मेरी मदद भी की, इसलिए धन्यवाद। मुझे केवल उसी ARGSको जोड़ना है जिसे घोषित किया जाना चाहिएFROM
एडोआर्डो

6
वाह धन्यवाद! का उपयोग करना ARGभी docs.docker.com/engine/reference/commandline/build/… में उल्लेख नहीं किया गया है और --build-argमेरे बिना बेकार थाARG
HeyWatch यह

19

यदि आप बिल्ड के दौरान पर्यावरण चर का उपयोग करना चाहते हैं। उपयोगकर्ता और पासवर्ड सेट करने की सुविधा देता है।

username= Ubuntu
password= swed24sw

Dockerfile

FROM ubuntu:16.04
ARG SMB_PASS
ARG SMB_USER
# Creates a new User
RUN useradd -ms /bin/bash $SMB_USER
# Enters the password twice.
RUN echo "$SMB_PASS\n$SMB_PASS" | smbpasswd -a $SMB_USER

टर्मिनल कमांड

docker build --build-arg SMB_PASS=swed24sw --build-arg SMB_USER=Ubuntu . -t IMAGE_TAG


3
सावधान रहें कि यह docker historyकमांड का उपयोग करके docker छवि में दिखाई देने वाले गुप्त मूल्यों को छोड़ देता है ।
गैरी

कभी-कभी केवल शीर्ष उत्तर ही उत्कीर्ण किया जाता है! लेकिन आपने इसे बहुत अच्छी तरह समझाया। धन्यवाद!
दुपिन्दर सिंह

14

यह शर्म की बात है कि हमें कई एआरजी की भी आवश्यकता है, इसके परिणामस्वरूप कई परतें होती हैं और इसके कारण बिल्ड धीमा हो जाता है, और किसी के लिए भी यह सोच रहा है कि, वर्तमान में कई एआरजी सेट करने का कोई तरीका नहीं है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.