ডকফেরাইল বিল্ড - ত্রুটি উপেক্ষা করা সম্ভব?


111

আমি একটি ডকফেরাইল পেয়েছি চিত্রটি তৈরি করার সময়, বিল্ডটি এই ত্রুটিতে ব্যর্থ হয়:

automake: error: no 'Makefile.am' found for any configure output
Error build: The command [/bin/sh -c aclocal && autoconf && automake -a] returned a non-zero code: 1

যা বাস্তবে নিরীহ। লাইব্রেরিটি সূক্ষ্মভাবে তৈরি করে, তবে ডকার এই ত্রুটিটি পাওয়ার পরে বিল্ডটি থামায়। আমি কোন উপায়ে ডকারকে কেবল এটি উপেক্ষা করার জন্য নির্দেশ দিতে পারি?

উত্তর:


220

অবশ্যই। ডকারটি কেবলমাত্র RUNশেলের স্ক্রিপ্টগুলিতে ফিরিয়ে দেওয়া ত্রুটি কোডগুলিতে সাড়া দিচ্ছে Dockerfile। আপনার যদি Dockerfileএমন কিছু থাকে:

RUN make

আপনি এটি দিয়ে প্রতিস্থাপন করতে পারেন:

RUN make; exit 0

এটি সর্বদা একটি 0(সাফল্য) প্রস্থান কোড ফেরত দেবে । অসুবিধা এখানে আপনার ইমেজ সফলভাবে গড়ে তুলতে এমনকি যদি সেখানে প্রদর্শিত হবে হয় বিল্ড প্রক্রিয়ায় প্রকৃত ত্রুটি।


2
দৌড়ানোর চেষ্টা করার সময় আমি এখানে এসেছি service php7-fpm start। এটি 1 ফিরে আসবে এবং আর ইউএন ব্যর্থ হবে; service php7-fpm start; service php7-fpm statusকৌতুকটি ব্যবহার করে - মনে হয় বিল্ড চলাকালীন কোনও সমস্যাও সমাধান করা যায়, যেহেতু পৃথকভাবে চলমান উভয় আদেশই সমস্যা দেয়।
igorsantos07

উত্স থেকে কিউটি 5 তৈরি করার চেষ্টা করার সময় আমি এখানে এসেছি। এটি ঠিক জরিমানা তৈরি করবে, তবে সামঞ্জস্যপূর্ণ বিল্ড ব্যবহার করে কিউটি বিল্ড প্রক্রিয়াটি বিল্ড-টাইম টেস্টগুলি মেকিং থেকে চালিত হয়েছে (যা ইচ্ছাকৃতভাবে ব্যর্থ হয়) আমার RUN কমান্ড ত্রুটি (2) দিয়ে বেরিয়ে এসেছে। আশা করি সমস্যার সমাধান হবে!
লেনার্ট রোল্যান্ড

33

এটি তাদের পক্ষে আগ্রহী হতে পারে, যাদের চিত্রগুলিতে সম্ভাব্য ত্রুটিগুলি লক্ষ্য করা / লগড করার জন্য যথেষ্ট ক্ষতিকারক নয় । (এছাড়াও, মন্তব্য করার মতো যথেষ্ট পরিমাণে প্রতিবেদন নেই, সুতরাং উত্তর হিসাবে এখানে।)

হিসাবে চিহ্নিত হয়েছে, অসুবিধা RUN make; exit 0হ'ল আপনি যদি নিজের বিল্ডটি ব্যর্থ হন তবে তা জানতে পারবেন না। অতএব, বরং এর মতো কিছু ব্যবহার করুন:

make test 2>&1 > /where/ever/make.log || echo "There were failing tests!"

এটির মতো, আপনাকে ডকার ইমেজ বিল্ড প্রক্রিয়া লগের মাধ্যমে বিজ্ঞপ্তি দেওয়া হবে এবং আপনি দেখতে পাচ্ছেন যে ঠিক কী ঘটেছিল make(বা অন্য কোনও কার্যকরকরণ, এটি তৈরি করার জন্য সীমাবদ্ধ নয়)।


এটি waaay আন্ডাররেটেড উত্তর। আমার ব্যবহারের ক্ষেত্রে এমন কিছু প্যাকেজ তালিকাগুলি পৌঁছানো যায়নি এবং apt-get update -yব্যর্থ হয়েছিল।
সিলভিউ বুর্কিয়া

14

আপনি স্ট্যান্ডার্ড বাশ উপেক্ষা ত্রুটিটিও ব্যবহার করতে || trueপারেন, আপনি যদি একটি শৃঙ্খলের মাঝখানে থাকেন তবে এটি দুর্দান্ত:

RUN <first stage> && <job that might fail> || true && <next stage>

শুধু আমার যা দরকার ছিল :) কাজটি ব্যর্থ হলে আরও ব্যতীত আরও ভাল হ'ল পরবর্তী পর্যায়ে (ক্লিনআপ) পরে
csomakk
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.