ডকার বিল্ড "প্রসঙ্গ প্রস্তুত করতে অক্ষম: প্রসঙ্গটি অবশ্যই একটি ডিরেক্টরি হতে হবে: / ব্যবহারকারী / টেম্পিউজার / গিট / ডকার / ডকফায়াইল"


92

আমার একটি আছে Dockerfileযা একটি Ubuntuছবি তৈরির কথা । তবে কখনই আমি দৌড়ায়

docker build -t ubuntu-test:latest ./Dockerfile

এটি কনসোলে নিম্নলিখিত ত্রুটিটি দেখায়

প্রসঙ্গ প্রস্তুত করতে অক্ষম: প্রসঙ্গটি অবশ্যই একটি ডিরেক্টরি হতে হবে: / ব্যবহারকারী / টেম্পিউজার / গিট / ডকার / ডকফায়াইল

আমি ম্যাক ওএসএক্স এ আছি। আমিও চেষ্টা sudoকরেছি। কিছুই কাজ হয় না।

উত্তর:


142

পরিবর্তে আপনাকে ডিরেক্টরিতে নির্দেশ করতে হবে। আপনি অবশ্যই ডকফায়াইল নির্দিষ্ট করবেন না।

docker build -t ubuntu-test:latest .না কাজ

docker build -t ubuntu-test:latest ./Dockerfileকাজ করে না


এটা কেন এমন? আপনি যখন খুব সহজেই ফাইলটি নিজেই এটিতে নির্দেশ করতে পারতেন তখন একটি
দিরের

72

আপনি -fবিকল্প সহ ডকার বিল্ডও চালাতে পারেন

docker build -t ubuntu-test:latest -f Dockerfile.custom .


4
এটি আমার পক্ষে কাজ করেছে। আমার ক্ষেত্রে ডকফাইফিলের নাম ছিল ডকফেরফিল-অ্যাবসিডি তাই আমাকে গুলি করতে হয়েছিল:docker build -t my-custom-name -f /path_to_my_docker_file/Dockerfile-abcd .
নিরঞ্জন হরপালে

17

Dockerfileকখন বিল্ড নির্দিষ্ট করতে, আপনি ব্যবহার করতে পারেন:

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

তবে এটি যদি ব্যর্থ হয় ADDবা COPYকমান্ড যা আপেক্ষিক পথে নির্ভর করে। একটা নির্দিষ্ট করার অনেক উপায় করছি contextজন্য docker buildআপনাকে পাঠাতে পারেন, Docker বিল্ড ডক্স আরও তথ্যের জন্য।


উবুন্টু 12.04 এর জন্য এটি করেছেন : docker build -t ubuntu:12.04 - < Dockerfileআপনাকে অবশ্যই ডকফাইফিলের
ডমিনিক মোটুকা

15

প্রসঙ্গগুলি বুঝতে

docker buildহুকুম

ডকারের বিল্ড কমান্ডের বেসিক সিনট্যাক্সটি

docker build -t imagename:imagetag context_dir

প্রসঙ্গ

প্রসঙ্গটি একটি ডিরেক্টরি এবং ডকার বিল্ড প্রক্রিয়াটি কী দেখতে পাবে তা নির্ধারণ করে: ডকফাইফিলের দৃষ্টিকোণ context_dir/mydir/myfileথেকে আপনার ফাইল সিস্টেমের যে কোনও ফাইল /mydir/myfileডকফাইফাইলে পরিণত হবে এবং তাই বিল্ড প্রক্রিয়া চলাকালীন।

ডকফেরাইল

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

আপনি যদি আলাদা নাম ব্যবহার করার জন্য জিদ করেন, "/ tmp / mydockerfile" বলুন, আপনি এটি ব্যবহার করতে পারেন -f:

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

তবে ডকফায়াইল একই ফোল্ডারে থাকবে না বা কমপক্ষে এটি খুঁজে পাওয়া আরও কঠিন।


2

এটি সহজ, যখনই ডকার বিল্ড চালানো হয়, ডকার জানতে চান, চিত্রটির নাম কী, তাই আমাদের পাস করতে হবে -t:। এখন নিশ্চিত হয়ে নিন যে আপনি যেখানে ডকফাইফাইল রয়েছেন এবং সেই একই ডিরেক্টরিতে আছেন

docker build -t <image_name>:<version> . উদাহরণস্বরূপ docker build -t my_apache:latest .ধরে নেওয়া যে আপনি আপনার ডকফাইফিলের মতো একই ডিরেক্টরিতে রয়েছেন অন্যথায় পাস-ফ পতাকা এবং ডকফাইফাইল।

docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile


দ্বিতীয় কমান্ডটি আমার পক্ষে চালানোর জন্য আমাকে এটিকে সামান্য পরিবর্তন করতে হয়েছিল: docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile( .শেষে একটি যোগ করুন)
জোশ

2

আমি একই সমস্যার মুখোমুখি। আমি ব্যবহার করছি docker version:17.09.0-ce

আমি নীচের পদক্ষেপগুলি অনুসরণ করি:

  1. ডকারফাইল তৈরি করুন এবং ডকার চিত্র তৈরির জন্য যুক্ত কমান্ড
  2. যে ডিরেক্টরিতে আমরা ডকফিল তৈরি করেছি সেখানে যান
  3. কমান্ড নীচে কার্যকর করুন $ sudo docker build -t ubuntu-test:latest .

এটি সমস্যা সমাধান করেছে এবং চিত্র সফলভাবে তৈরি হয়েছে।

দ্রষ্টব্য: বিল্ড কমান্ড ডকার সংস্করণের উপর নির্ভর করে পাশাপাশি আমরা কোন বিল্ড বিকল্পটি ব্যবহার করছি। :)


1

আমার ত্রুটি হওয়ার কারণগুলির মধ্যে একটি হ'ল ফাইলের নামটি ফাইলের নাম নিশ্চিত করে তা নিশ্চিত করে ডকফেরফাইল তাই আমি এটি বের করে ফেললাম , আশা করি এটি কারও সাহায্য করবে।

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