Подтвердить что ты не робот

Не удалось создать конкретный файл докеров

Я могу построить файл Docker, например

docker build -t deepak/ruby .

Но для файла Docker, который не называется 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
4b9b3361

Ответ 1

Обратите внимание, что есть точка . в конце обеих команд.

сборка докера -f MyDockerfile.

Или с тегом:

сборка докера -t mysuperimage -f MyDockerfile.

Ответ 2

Последний параметр для сборки докеров - это путь сборки, когда вы помещаете ., это означает, что это путь, где вы найдете Dockerfile. Когда вы измените его на Dockerfile.app, он попытается найти Dockerfile.app/Dockerfile, что неверно.

Я не уверен, что он все равно будет работать, но вы могли это сделать.

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

Попробуйте и посмотрите, поможет ли она, если нет, возможно, открыть проблему докера, чтобы добавить эту функцию или обновить документацию о том, как использовать файл Docker с другим именем.

Дополнительная информация здесь: http://docs.docker.io/en/latest/commandline/command/build/

Ответ 4

Попробуйте dockerfeed. Он использует функцию docker для создания контекста через stdin. Я написал сценарий для решения именно вашей проблемы, с которой я столкнулся.

Чтобы заменить Dockerfile другим, вы делаете это так:

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

И вуаля. Dockerfeed делает то же самое, что и docker build Docker. Он упаковывает исходный код в свой Dockerfile, но позволяет вам заменить старый Dockerfile на нужный. В процессе не создаются файлы, источник не изменяется. Созданный архив tar отправляется в Docker, который, в свою очередь, отправляет его демону Docker.

Обновление: Это был правильный ответ в старые времена, когда не было -f переключателя -f. С версией докера 1.5 эта опция была введена. Теперь вы можете создать другой Dockerfile, например так:

docker build -f other-Dockerfile .

Ответ 5

Вы можете добиться этого и с помощью компоновки docker.

В вашем docker-compose.yml в разделе сборки вы можете указать каталог, в котором вы храните свой файл докеров и его альтернативное имя, как показано ниже:

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

docker-compose

Ответ 6

Предположим, что вы успешно установили панель инструментов 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"]

Убедитесь, что эти файлы расположены точно в корневой папке. Когда вы запустите docker-compose, вы создадите образ для Интернета.

Ответ 7

Мой случай находится в каталоге /tmp и есть много файлов и попыток докера с другими файлами, хотя я -f <Dockerfile.foo>

Наиболее чистое и простое (для меня) решение - это (среди ответов dockerfeed сверху):

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