একাধিক যুক্তি সহ - বিল্ড-আরগ দিয়ে ডকার বিল্ড


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, নাম্বার_প্রেমিকা = 2" মান অনুসারে একটি পরিবর্তনশীল সেট করে

কোনও ধারণা কীভাবে আমি একাধিক যুক্তি সংজ্ঞায়িত করতে পারি?

উত্তর:


355

--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
HeyWatchThis

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কমান্ডটি ব্যবহার করে ডকার চিত্রের মধ্যে গোপনীয় মানগুলি দৃশ্যমান ছেড়ে দেয় ।
গ্যারি

কখনও কখনও একমাত্র শীর্ষ উত্তর upvated হয়! তবে আপনি এটি খুব ভাল ব্যাখ্যা করেছেন। ধন্যবাদ!
দুপিন্দর সিং

14

এটি লজ্জাজনক যে আমাদেরও একাধিক এআরজি প্রয়োজন, এটি একাধিক স্তরগুলির ফলস্বরূপ এবং এর কারণে বিল্ডটি ধীর করে দেয় এবং যে কেউ ভাবছেন যে, বর্তমানে একাধিক এআরজি সেট করার কোনও উপায় নেই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.