আপনার এন্ট্রিপয়েন্ট স্ক্রিপ্টের শীর্ষে একটি চেক যুক্ত করুন
ডকারকে সত্যই এটি একটি নতুন বৈশিষ্ট্য হিসাবে বাস্তবায়িত করা দরকার, তবে পরিস্থিতিগুলির জন্য এখানে আপনার আরও একটি বিকল্প বিকল্প রয়েছে যেখানে আপনার একটি এন্ট্রিপয়েন্ট রয়েছে যা সাফল্য বা ব্যর্থতার পরে শেষ হয়, যা ডিবাগ করা কঠিন করে তুলতে পারে।
আপনার যদি ইতিমধ্যে কোনও এন্ট্রিপয়েন্ট স্ক্রিপ্ট না থাকে তবে এমন একটি তৈরি করুন যা আপনার ধারকটির জন্য যা যা কমান্ড (গুলি) চালায় runs তারপরে, এই ফাইলের শীর্ষে, এই লাইনগুলি এতে যুক্ত করুন entrypoint.sh:
# Run once, hold otherwise
if [ -f "already_ran" ]; then
echo "Already ran the Entrypoint once. Holding indefinitely for debugging."
cat
fi
touch already_ran
# Do your main things down here
catসংযোগটি ধরে রেখেছে তা নিশ্চিত করার জন্য , আপনাকে একটি টিটিওয়াই সরবরাহ করতে হবে। আমি আমার এন্ট্রিপয়েন্ট স্ক্রিপ্টটির সাথে ধারকটি চালাচ্ছি:
docker run -t --entrypoint entrypoint.sh image_name
এর ফলে স্ক্রিপ্টটি একবার চালানো হবে এবং এমন একটি ফাইল তৈরি করা হবে যা ইঙ্গিত করে যে এটি ইতিমধ্যে চলছে (কনটেইনার ভার্চুয়াল ফাইল সিস্টেমে)। তারপরে আপনি ডিবাগিং সম্পাদন করার জন্য ধারকটি পুনরায় চালু করতে পারেন:
docker start container_name
আপনি যখন already_ranধারকটি পুনরায় চালু করবেন তখন ফাইলটি পাওয়া যাবে যার ফলে এন্ট্রিপয়েন্ট স্ক্রিপ্টটি আটকে catথাকবে (যা কেবলমাত্র ইনপুটটির জন্য চিরকাল অপেক্ষা করে যা কখনই আসবে না, তবে ধারকটি জীবিত রাখে)। তারপরে আপনি একটি ডিবাগিং bashসেশনটি কার্যকর করতে পারেন :
docker exec -i container_name bash
ধারকটি চলমান অবস্থায়, আপনি যদি আবার সেইরূপে ডিবাগ করার প্রয়োজন হয় তবে আপনি পুনরায় পুনরায় চালনার already_ranজন্য entrypoint.shস্ক্রিপ্টটি সরিয়ে ফেলতে এবং নিজে চালিত করতে পারেন can