ডকারিগনোর: একটি ফাইল এবং ডকরফিল ছাড়া সমস্ত কিছু উপেক্ষা করুন


92

সুতরাং মূল উদ্দেশ্যটি ছিল একটি চর্বিযুক্ত জারের অ্যাপ্লিকেশনটিকে ডকারাইজ করে এটিকে ইলাস্টিকিয়ানস্টালকের মধ্যে স্থাপন করা। সমস্যাটি প্রসঙ্গেই। ডকারে এত প্রসঙ্গ যুক্ত করা একটু বোকামি, যদি আমার কেবলমাত্র একটি জার ফাইল দরকার হয়।

.Dockerignore ফাইলটি নিয়ে আমি প্রায় খেলছি, তবে আমি হারিয়ে গেছি। আমি গিটিগনোর অবহেলা ব্যবহার করার চেষ্টা করেছি, তবে এটি কার্যকর হয় না।

*
!Dockerfile
*/
!target/
target/*
!target/*.jar

রেজেক্সের সাথে জিনিসটিও রয়েছে, তবে দেখে মনে হচ্ছে জটিল রেজেক্স সমর্থিত নয়।

^((?!Dockerfile).)*$

আমি স্ট্যাকওভারফ্লোতেও অনুসন্ধান করার চেষ্টা করেছি এবং এই দুটিই আমি খুঁজে পেয়েছি:

এই প্রশ্নটি সম্ভবত দ্বিতীয়টির সাথে সমান হতে পারে তবে আমি মনে করি এটি এখানে থেকে কিছুটা পার্থক্য, আমি কেবল একটি প্রসঙ্গে একটি ফাইল অন্তর্ভুক্ত করতে চাই।

যে কোন ধরণের সাহায্য গ্রহন করা হবে.


ফোল্ডারগুলির জন্য বিস্ময়কর চিহ্নটি আমার পক্ষে কাজ করে!
ইভান আরাকি

উত্তর:


135

আপনার যদি কিছু ডিরেক্টরি বা ফাইলগুলি বাদ দিয়ে সমস্ত কিছু উপেক্ষা করার প্রয়োজন হয় এবং অনুমতিপ্রাপ্ত ডিরেক্টরিগুলির মধ্যে কিছু অপ্রয়োজনীয় ফাইলও উপেক্ষা করতে চান তবে আপনি নীচের .dockerignoreফাইলটি ব্যবহার করতে পারেন :

# Ignore everything
**

# Allow files and directories
!/file.txt
!/src/**

# Ignore unnecessary files inside allowed directories
# This should go after the allowed directories
**/*~
**/*.log
**/.DS_Store
**/Thumbs.db

8
ডকার ডকুমেন্টেশন অনুসারে এটি কেবল *প্রথম লাইনে (পরিবর্তে **) রাখা যথেষ্ট হবে should উদ্ধৃতি: "আপনি কোন ফাইলকে বাদ দিয়ে এর পরিবর্তে প্রসঙ্গের মধ্যে কোন ফাইল অন্তর্ভুক্ত করবেন তা নির্দিষ্ট করতে চাইতে পারেন To এটি অর্জন *করতে প্রথম প্যাটার্ন হিসাবে নির্দিষ্ট করুন , তারপরে এক বা একাধিক !ব্যতিক্রমী ধরণগুলি অনুসরণ করুন"।
জনি থান্ডারম্যান 11'19

32

থেকে dockerfile রেফারেন্স :

গো-এর ফাইলপথ.মেলা নিয়মের বাইরে ডকার এছাড়াও একটি বিশেষ ওয়াইল্ডকার্ড স্ট্রিং ** সমর্থন করে যা কোনও সংখ্যক ডিরেক্টরিকে (শূন্য সহ) মেলে। উদাহরণস্বরূপ, ** / *। গো বিল্ড কনটেক্সটের মূল সহ সমস্ত ডিরেক্টরিতে পাওয়া যায় এমন .go দিয়ে শেষ হওয়া সমস্ত ফাইল বাদ দেবে।

সুতরাং কেবল ** সমেত একটি লাইন ডকফায়াইলের মতো একই ডিরেক্টরিতে থাকা সমস্ত কিছুকে উপেক্ষা করবে।

প্রত্যাশা অনুযায়ী উদ্দীপনাটি আপনি ডকার ডিমনকে পাঠাতে ইচ্ছুক যে কোনও ফাইল উল্লেখ করতে ব্যবহার করতে পারেন।


4
এটি অত্যন্ত গুরুত্বপূর্ণ যে **ফাইলের শীর্ষে যান, অন্যথায় ব্যতিক্রম উপেক্ষা করা হবে। ডকার সর্বশেষ বিধিটি ব্যবহার করে যা "চূড়ান্ত" বিধি হিসাবে মেলে, তাই যদি **শেষ হয় তবে তা সব মিলবে।
tedivm

4
সুতরাং **প্রথম লাইনে এবং !fooপরবর্তী লাইনে যুক্ত করুন যদি fooআপনি কেবলমাত্র অন্তর্ভুক্ত করতে চান এমন ফাইল হয়।
Saca

9

এটি অদ্ভুত লাগতে পারে তবে আপনার যদি প্রয়োজন কেবল একটি একক জার ফাইল হয় তবে আপনি আপনার বিল্ড সিস্টেমে একটি "ডকার" ফোল্ডার তৈরি করতে পারেন যাতে আপনার ডকফায়াইল রয়েছে। আপনি যখন নিজের বিল্ডগুলি চালাবেন, তখন বিল্ড স্ক্রিপ্টগুলি একক জার ফাইলটিকে "ডকার" এ অনুলিপি করুন, তারপরে ডকার ইমেজ বিল্ডটি ("ডকার" ফোল্ডারের ভিতরে থেকে) চালিত করুন এবং হয়ে গেলে আপনার ডকার রেজিস্ট্রিতে চাপ দিন।


4
হাই, এটি মোটেও অদ্ভুত শোনায় না। আমি ভেবেছিলাম এটি একটি সাধারণ অনুশীলন, তবে আমি যদি সম্ভব হয় তবে .ডোকরাইনোর দিয়ে এটি করার একটি উপায় খুঁজছিলাম। তদুপরি, আমি সত্যিই এমভিএন এক্সএমএল পছন্দ করি না :)
রোয়ান্টো

আপনি উভয় পন্থাকে একটি উপ-ডিরেক্টরিতে ডকফাইফিল রেখে এবং .dockerignore ব্যবহার করে একত্রিত করতে পারেন। দস্তাবেজগুলির মতে, যাইহোক এটি করা ভাল
জোনাথন লি

ডকারের ডকুমেন্টেশন : বেশিরভাগ ক্ষেত্রে, খালি ডিরেক্টরিটি প্রসঙ্গ হিসাবে শুরু করা এবং আপনার ডকস্পাইলকে সেই ডিরেক্টরিতে রাখা ভাল। ডকফাইফিল তৈরির জন্য প্রয়োজনীয় ফাইলগুলি যুক্ত করুন। সতর্কতা: আপনার রুট ডিরেক্টরিটি /, PATH হিসাবে ব্যবহার করবেন না কারণ এটি আপনার হার্ড ড্রাইভের পুরো সামগ্রীটি ডকার ডেমনে স্থানান্তরিত করে।
জোনাথন লি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.