ডকফাইফাইল ব্যবহার করে কীভাবে এক স্তরে একাধিক ফাইল অনুলিপি করবেন?


246

নীচে Dockerfileচারটি COPYস্তর রয়েছে :

COPY README.md ./
COPY package.json ./
COPY gulpfile.js ./
COPY __BUILD_NUMBER ./

পরিবর্তে একটি স্তর ব্যবহার করে এই ফাইলগুলি কীভাবে অনুলিপি করবেন? নিম্নলিখিত চেষ্টা করা হয়েছিল:

COPY [
    "__BUILD_NUMBER ./",
    "README.md ./",
    "gulpfile ./",
    "another_file ./",
]

উত্তর:


427
COPY README.md package.json gulpfile.js __BUILD_NUMBER ./

অথবা

COPY ["__BUILD_NUMBER", "README.md", "gulpfile", "another_file", "./"]

সোর্সফাইলে নির্দিষ্টকরণে আপনি ওয়াইল্ডকার্ড অক্ষরও ব্যবহার করতে পারেন। আরও বিশদ জন্য ডক্স দেখুন

ডিরেক্টরি বিশেষ! যদি লিখি

COPY dir1 dir2 ./

যে আসলে মত কাজ করে

COPY dir1/* dir2/* ./

আপনি যদি একক কমান্ডে গন্তব্য ডিরেক্টরিতে একাধিক ডিরেক্টরি (তাদের বিষয়বস্তু নয়) অনুলিপি করতে চান তবে আপনাকে বিল্ড প্রসঙ্গটি সেট আপ করতে হবে যাতে আপনার উত্স ডিরেক্টরিগুলি একটি সাধারণ পিতামাতার অধীনে থাকে এবং তারপরে COPYসেই পিতামাতার অধীনে থাকে।


53
দ্রষ্টব্য যে যদি উত্স ডিরেক্টরি হয় তবে এটি ডিরেক্টরি বিষয়বস্তু অনুলিপি করে , ডিরেক্টরিগুলি নিজেরাই নয়।
ক্লাদিউ

7
লক্ষ্য করুন যে গন্তব্য ডিরেক্টরিটি একই। যদি আপনি বিভিন্ন গন্তব্য সহ প্রচুর ফাইলগুলি করেন তবে আপনি ওভারলে ফাইল সিস্টেম (ক্রোটের মতো) নির্মাণের কথা বিবেচনা করতে পারেন, তারপরে tarএটিকে একটি সংরক্ষণাগারে পরিণত করে এবং এটির সাথে যুক্ত করে with
ইনস্টল করুন মনিকা-ডোর দুহ

4
@ ক্লাউডিউ কীভাবে ফোল্ডারগুলি অনুলিপি করবেন?
k0pernikus

5
@ k0pernikus আপনি COPY myDir1 বলতে পারেন ./MyDir1/
ম্যানুয়েল ম্যানহার্ট

@ ম্যানুয়েল-ম্যানহার্ট এমন কেউ আছেন কি জানেন যে আমরা বিল্ড প্যারামিটার ব্যবহার করে ফাইলগুলির তালিকা প্যারামিটারাইজ করতে পারি কিনা? github.com/moby/moby/issues/38532 ?
মার্সেলো ডি বিক্রয়

52
COPY <all> <the> <things> <last-arg-is-destination>

তবে এখানে ডক্স থেকে একটি গুরুত্বপূর্ণ অংশ:

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

https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#add-or-copy


আপনি কি জানেন যে আমরা "সমস্ত জিনিস" পরামিতি করতে পারি কিনা ??? বিল্ড পরামিতি ব্যবহার করছেন? github.com/moby/moby/issues/38532 ???
মার্সেলো ডি বিক্রয়

@ মার্সেলোডসেলস নিশ্চিত হন না কেন আপনার এটির প্রয়োজন হবে। আপনি এই ফাইলগুলি ব্যতীত কোনও বেস ইমেজ তৈরি করবেন না কেন এবং তারপরে শিশু চিত্রগুলির অনুলিপি নির্দেশনা রয়েছে - যদি তাদের কোনওভাবেই পথ নির্ধারণ করার প্রয়োজন হয় তবে এটি খুব বেশি পার্থক্য করে না। অথবা আপনি এটি কেবল চিত্র (গুলি) কে পুরোপুরি ছেড়ে দিতে পারেন এবং এটি পাত্রে মাউন্ট করতে পারেন - সেখানে এই কনফিগার করার জন্য আপনার কাছে .env ফাইল রয়েছে।
ম্যানুয়েল মানহার্ট

এছাড়াও আপনি যে কোনও উপায়ে সর্বদা কোনও বিদ্যমান পাথের অনুলিপি করতে পারেন, যেহেতু ফাইল সিস্টেম স্তরযুক্ত, এটি পূর্বের বিদ্যমান সামগ্রীতে ওভারল্যাপ / ছায়া দেবে।
ম্যানুয়েল মনহার্ট

@ ম্যানুয়েলম্যানহার্ট, আমি ওবিল্ড কপি দিয়ে একটি ডায়নামিক প্যারামিটারাইজড ইমেজ তৈরি করছি ... প্ল্যাটফর্মের অংশ হিসাবে, চিত্রটিতে যা করা দরকার তা জটিলতা আমি গোপন করছি, সুতরাং, এজন্যই আমাকে মূল্যগুলি সরবরাহ করতে হবে প্যারামিটার হিসাবে
মার্সেলো ডি বিক্রয়

@ মার্সেলোডসেলস আমি এই মুহুর্তে / এখনও সমর্থিত বলে মনে করি না। কিন্তু আপনি বিল্ড আর্গুমেন্ট ব্যবহার করে encapsulated আছে পারে, দেখতে stackoverflow.com/questions/43654656/...
ম্যানুয়েল Manhart

7

সহজ

COPY README.md  package.json gulpfile.js __BUILD_NUMBER ./

ডক থেকে

যদি প্রত্যক্ষ বা ওয়াইল্ডকার্ড ব্যবহারের কারণে একাধিক সংস্থান নির্দিষ্ট করা থাকে তবে অবশ্যই ডিরেক্টরি হতে হবে এবং এটি অবশ্যই একটি স্ল্যাশ / দিয়ে শেষ হবে।


6

এটি উল্লেখযোগ্য হতে পারে .dockerignoreযে আপনি অনুলিপি করতে চান না এমন ফাইলগুলি বাদ দিতে আপনি একটি ফাইলও তৈরি করতে পারেন:

https://docs.docker.com/engine/reference/builder/#dockerignore-file

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

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