it-swarm.dev

غير قادر على بناء Dockerfile معين

أنا قادر على بناء Dockerfile مثل

docker build -t deepak/Ruby .

ولكن ل Dockerfile الذي لم يسمى Dockerfile

# DOCKER-VERSION 0.4.8

FROM deepak/Ruby

MAINTAINER Deepak Kannan "[email protected]"

RUN ./bin/Rails s

دعنا نقول أنه يسمى Dockerfile.app التي نبني بها

docker build -t deepak/app Dockerfile.app

ثم أحصل على الخطأ

Uploading context 0 bytes
Error build: EOF
EOF
58
deepak

لاحظ أن هناك نقطة . في نهاية كلا الأمرين.

عامل بناء بناء -F MyDockerfile.

أو مع علامة:

عامل بناء بناء تي mysuperimage -F MyDockerfile.

116
Andrzej Rehmann

المعلمة الأخيرة المرسلة إلى عامل البناء هي مسار الإنشاء ، عندما تضع . فهذا يعني أن هذا هو المسار الذي ستجد فيه Dockerfile. عندما تقوم بتغييره إلى Dockerfile.app ، فسيحاول البحث عن Dockerfile.app/Dockerfile ، وهذا غير صحيح.

لست متأكدًا مما إذا كانت ستظل تعمل ، لكنك اعتدت أن تكون قادرًا على القيام بذلك.

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

جرب ذلك ومعرفة ما إذا كان يساعد ، إن لم يكن ، ربما فتح مشكلة عامل ميناء لإضافة هذه الميزة مرة أخرى أو تحديث الوثائق حول كيفية استخدام Dockerfile مع اسم مختلف.

مزيد من المعلومات هنا: http://docs.docker.io/en/latest/commandline/command/build/

16
Ken Cochrane

هذا يعمل

docker build doronaviguy/helloworld -f SomeDockerFile .

بناء عامل الميناء الوثائق

15
doron aviguy

جرب dockerfeed . ويستخدم ميزة عامل ميناء لبناء سياق عبر stdin. كتبت السيناريو لمعالجة مشكلتك بالضبط كنت أواجه نفسي.

لاستبدال Dockerfile بأخرى مختلفة ، يمكنك القيام بذلك مثل هذا:

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

وفويلا. يقوم Dockerfeed بنفس طريقة docker build. يحزم المصدر مع Dockerfile الخاص به ولكن يتيح لك مبادلة Dockerfile القديم مع المطلوب. لا يتم إنشاء أي ملفات في هذه العملية ، ولا يتم تغيير أي مصدر. يتم نقل أرشيف القطران الذي تم إنشاؤه إلى عامل ميناء ، والذي بدوره يرسله إلى برنامج تشغيل الجهاز الخفي.

التحديث: كانت هذه إجابة صالحة في الأيام الخوالي عندما لم يكن هناك رمز -f متاحًا. مع الإصدار 1.5 عامل ميناء تم تقديم هذا الخيار. الآن يمكنك إنشاء توفير Dockerfile مختلفة مثل هذا:

docker build -f other-Dockerfile .
6
itsafire

يمكنك الحصول على هذا أيضًا باستخدام عامل الإرساء.

في docker-compose.yml أسفل قسم الإنشاء ، يمكنك تحديد الدليل الذي تخزن فيه dockerfile واسم بديل له على النحو التالي:

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

عامل إنشاء

4
shaft

لنفترض أنك قمت بتثبيت صندوق أدوات docker بنجاح بما في ذلك docker-compose و docker-machine . هذا هو بلدي عامل ميناء compose.yml

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

وهذا تحت Dockerfile

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

تأكد من أن هذه الملفات موجودة بدقة تحت مجلد الجذر. عندما تقوم بتشغيل عامل الإرساء ، فأنت بصدد إنشاء صورة للويب.

0
Faris Rayhan

حالتي موجودة في دليل /tmp وهناك الكثير من الملفات ومحاولة إرساء السفن مع ملفات الآخرين رغم أنني مررت -f <Dockerfile.foo>

الحل الأكثر نظافة وسهولة (بالنسبة لي) هو (intead dockerfeed من الإجابات أعلاه):

cat DockerFile.debian.foo | docker build -t debian.foo -
0
tres.14159