কিছু কারণে এখানে বেশিরভাগ উত্তর আমাকে সাহায্য করেনি (সম্ভবত এটি ডকফাইফাইলের আমার FROM চিত্রের সাথে সম্পর্কিত)
সুতরাং আমি যুক্তিটি ফাঁকা আছে কি না তা পরীক্ষা করে ডকার বিল্ড করার সময় যদি বিবৃতিটি পরিচালনা করতে হয় তবে bash script
আমার ওয়ার্কস্পেসে একটি তৈরি করতে পছন্দ করতাম--build-arg
বাশ লিপি:
#!/bin/bash -x
if test -z $1 ; then
echo "The arg is empty"
....do something....
else
echo "The arg is not empty: $1"
....do something else....
fi
Dockerfile:
FROM ...
....
ARG arg
COPY bash.sh /tmp/
RUN chmod u+x /tmp/bash.sh && /tmp/bash.sh $arg
....
ডকার বিল্ড:
docker build --pull -f "Dockerfile" -t $SERVICE_NAME --build-arg arg="yes" .
মন্তব্য: এটি ব্যাশ স্ক্রিপ্টের অন্যথায় (মিথ্যা) যাবে
docker build --pull -f "Dockerfile" -t $SERVICE_NAME .
মন্তব্য: এটি যদি (সত্য) যায়
সম্পাদনা 1:
বেশ কয়েকটি চেষ্টার পরে আমি নিম্নলিখিত নিবন্ধটি পেয়েছি এবং এটি একটি
যা আমাকে 2 টি জিনিস বুঝতে সাহায্য করেছে:
1) এফআরএম এর আগে এআরজি বিল্ডের বাইরে
২) ডিফল্ট শেলটি হ'ল / বিন / শ, যার অর্থ যদি অন্যটি ডকার বিল্ডে কিছুটা আলাদা কাজ করে। উদাহরণস্বরূপ আপনার স্ট্রিংগুলির তুলনা করতে "==" এর পরিবর্তে কেবল একটি "=" প্রয়োজন।
সুতরাং আপনি এটি ভিতরে করতে পারেন Dockerfile
ARG argname=false #default argument when not provided in the --build-arg
RUN if [ "$argname" = "false" ] ; then echo 'false'; else echo 'true'; fi
এবং এর মধ্যে docker build
:
docker build --pull -f "Dockerfile" --label "service_name=${SERVICE_NAME}" -t $SERVICE_NAME --build-arg argname=true .