একটি নির্দিষ্ট ডকফেরাইল তৈরি করতে সক্ষম নয়


94

আমি একটি ডকফেরাইলের মতো একটি বিল্ড তৈরি করতে সক্ষম

docker build -t deepak/ruby .

তবে এমন একটি ডকফাইফিলের জন্য যার নাম নেই Dockerfile

# DOCKER-VERSION 0.4.8

FROM deepak/ruby

MAINTAINER Deepak Kannan "deepak@example.com"

RUN ./bin/rails s

আসুন আমরা এটির Dockerfile.app সাথে তৈরি করি এটি বলা হয়

docker build -t deepak/app Dockerfile.app

তাহলে আমি ত্রুটি পেয়েছি

Uploading context 0 bytes
Error build: EOF
EOF

15
সুতরাং আপনার প্রশ্নটি হ'ল, যদি ডকফাইফিলের নাম ডকফাইফিল না হয় তবে আমি কীভাবে একটি ডকফিলিল তৈরি করব?
কেন কোচরনে

4
@ কেনকোচরেন যে প্রশ্ন হল
দীপক

4
আপনি যদি docker build --helpসেখানে দৌড়েন তবে আপনি যা সন্ধান করছেন তা সন্ধান করতে পারেন: -ফ, --ফাইল স্ট্রিং নাম ডকফেরফিলের নাম (ডিফল্ট হ'ল 'পাথ / ডকফাইফাইল')
ব্লাস্ট্রড্রি

4
আপনি ২০১৩ সালে ডকার শিখছিলেন This এটি দূরদর্শিতা।
এমকান

উত্তর:


220

লক্ষ্য করুন .উভয় কমান্ডের শেষে একটি বিন্দু রয়েছে।

মেকড বিল্ড-মাইডোকারফিল।

অথবা একটি ট্যাগ সহ:

ডকার বিল্ড-মাইসুপারিমেজ -ফ মাইডোকারফিল।


4
docker build -f Dockerfile.consumerআমাকে একটি ত্রুটি দেয় "ডকার বিল্ড" এর জন্য ঠিক 1 টি যুক্তি প্রয়োজন requires 'ডকার বিল্ড - হেল্প' দেখুন। ব্যবহার: ডকার বিল্ড [বিকল্পগুলি] পাঠ | ইউআরএল | -
কমল

14
@ কমল আপনি কি .উপরের আদেশের শেষে একটি বিন্দু ( ) লক্ষ্য করেছেন?
সতীশ পাগলু

7
শুধু বলছি - যোগ করার প্রয়োজন। কেবলমাত্র বিরক্তিকর
myloginid

4
.একটি প্রয়োজনীয় জিনিস না। বিল্ড কমান্ডটি দুটি টি অর্গ গ্রহণ করে। পথে Dockerfile& পাথ contextডিরেক্টরি। সুতরাং, আমরা এটি করতে পারিdocker build -t mysupertag -f ./foo/Dockerfile ./foo
মোহনিশ


23

ডকার বিল্ডের সর্বশেষ পরামিতিটি হ'ল বিল্ড পাথ, আপনি যখন .এটি যুক্ত করেন তার অর্থ এটিই সেই পথ যেখানে আপনি খুঁজে পাবেন Dockerfile। আপনি যখন এটিকে পরিবর্তন Dockerfile.appকরবেন তখন চেষ্টা করবেন এবং অনুসন্ধান করবেন Dockerfile.app/Dockerfileযা সঠিক নয়।

এটি এখনও কাজ করবে কিনা তা সম্পর্কে আমি নিশ্চিত নই, তবে আপনি এটি করতে সক্ষম হতেন।

$ docker build -t deepak/app - < Dockerfile.app

এটি চেষ্টা করে দেখুন এবং দেখুন যদি এটি না দেয় তবে এই বৈশিষ্ট্যটি আবার যুক্ত করতে ডকার ইস্যুটি খুলুন, বা কীভাবে কোনও আলাদা নাম সহ ডকফেরিল ব্যবহার করবেন সে সম্পর্কে ডকুমেন্টেশন আপডেট করুন।

এখানে আরও তথ্য: http://docs.docker.io/en/latest/commandline/command/build/


4
আমি একটি ইউআরএল চেষ্টা করেছি এবং এটি কাজ করে। পাথটিও ডক্স অনুসারে কাজ করা উচিত। একটি বাগ দায়ের করা হবে।
দীপক

4
আপনি যে দস্তাবেজগুলি ভাগ করেছেন সে অনুযায়ী (ধন্যবাদ)। docker build - < Dockerfileআমাকে একটি স্থানীয় ফাইল যোগ করার অনুমতি দেবে না। কিন্তু এটা চেষ্টা করেছি এবং এটি কাজ করে
দীপক

4
তবে আমি একটি আলাদা ডকফাইফাইল দিতে চাই এবং এখনও একটি প্রসঙ্গ আছে। ফাইল যোগ করুন. তাই আমি একটি বাগ ফাইল হবে
দীপক

এটি কেবলমাত্র এটিতে একটি ডকফরফিল দিয়ে একটি প্রসঙ্গ তৈরি করবে। সমস্ত সমর্থনকারী ফাইল এটিকে প্রসঙ্গে তৈরি করবে না।
itafire

13

ডকারফিড চেষ্টা করুন । এটি স্টিডিনের মাধ্যমে একটি প্রসঙ্গ তৈরি করতে ডকার বৈশিষ্ট্যটি ব্যবহার করে। আমি নিজেই যে সমস্যার মুখোমুখি হয়েছি ঠিক তার সমাধান করতে আমি স্ক্রিপ্ট লিখেছিলাম।

কোনও ডকফাইফাইলকে অন্যরকমের সাথে প্রতিস্থাপন করতে আপনি এটি এর মতো করুন:

dockerfeed -d Dockerfile.app . | docker build -t deepak/ruby -

এবং voilà। ডকারফিড একই কাজ করছে docker build। এটি উত্সটিকে তার ডকফাইফিল দিয়ে প্যাক করে তবে আপনাকে পছন্দসই একটি দিয়ে পুরানো ডকফেরফিলটি সরিয়ে নিতে দেয়। প্রক্রিয়াটিতে কোনও ফাইল তৈরি করা হয় না, কোনও উত্স পরিবর্তিত হয় না। উত্পাদিত টার সংরক্ষণাগারটি ডকারে পাইপ করা হয়, যার ফলস্বরূপ এটি ডকার ডেমনকে প্রেরণ করে।

আপডেট: পুরানো দিনগুলিতে এটি কোনও বৈধ উত্তর ছিল যখন কোনও -fসুইচ উপলব্ধ ছিল না । ডকার সংস্করণ 1.5 এর সাথে এই বিকল্পটি চালু করা হয়েছিল। এখন আপনি এটির মতো একটি অন্য ডকফেরাইল সরবরাহ করতে পারেন:

docker build -f other-Dockerfile .

5

আপনি ডকার-কমপোজ ব্যবহার করে এটিকে আকাঙ্ক্ষিত করতে পারেন।

বিল্ড বিভাগের অধীনে আপনার ডকার-কমপোজ.আইএমএলতে আপনি যে ডিরেক্টরিতে আপনার ডকফর্মিল এবং এর বিকল্প নামটি সংরক্ষণ করছেন তা নিম্নরূপে নির্দিষ্ট করতে পারেন:

build:
  context: "/path/to/docker/directory"
  dockerfile: "dockerfile-alternate-name"

ডকার-রচনা


0

ধরে নেওয়া যাক যে আপনি সফলভাবে ডকার-কম্পোজ এবং ডকার-মেশিন সহ ডকার টুলবক্সটি ইনস্টল করেছেন । এটি আমার ডকার-কমপোজ.আইএমএল

version: '2'
services: 
  web: ./www/python
  ports:
   - "5000:5000"

এবং এটি ডকফাইফিলের অধীনে

FROM python:3.4-alpine
ADD ./www/python /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

নিশ্চিত করুন যে এই ফাইলগুলি মূল ফোল্ডারের নীচে অবস্থিত। আপনি যখন ডকার-রচনা আপ চালান তখন আপনি ওয়েবের জন্য চিত্র তৈরি করতে যাচ্ছেন।


0

আমার ক্ষেত্রে /tmp কেসটি ডিরেক্টরিতে রয়েছে এবং এখানে অনেকগুলি ফাইল রয়েছে এবং ডকোর অন্যদের সাথে চেষ্টা করার চেষ্টা করে যা আমি পাস করি-f <Dockerfile.foo>

সর্বাধিক পরিচ্ছন্ন এবং সহজ (আমার জন্য) সমাধান হ'ল ( dockerfeedউপরের উত্তরগুলির সাথে অন্তর্ভুক্ত করুন):

cat DockerFile.debian.foo | docker build -t debian.foo -

0

উইন্ডোজ ব্যবহারকারীর কমান্ড নীচে চেষ্টা করা উচিত:

ডকার বিল্ড -f পরম_ডোকার_ফাইল_পথ ডট

উদাহরণ স্বরূপ :

ডকার বিল্ড ফ

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