无法构建特定的Dockerfile

时间:2013-07-04 09:28:27

标签: docker

我可以构建像

这样的Dockerfile

docker build -t deepak/ruby .

但对于未命名为Dockerfile

的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

9 个答案:

答案 0 :(得分:113)

请注意,两个命令末尾都有一个点.

  

docker build -f MyDockerfile。

或带有标签:

  

docker build -t mysuperimage -f MyDockerfile。

答案 1 :(得分:16)

docker build的最后一个参数是构建路径,当你放置.时,这意味着这是你找到Dockerfile的路径。当您将其更改为Dockerfile.app时,它会尝试查找Dockerfile.app/Dockerfile,这是不正确的。

我不确定它是否仍然可以使用,但你曾经能够做到这一点。

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

尝试一下,看看它是否有帮助,如果没有,可能会打开一个docker问题来重新添加此功能,或者更新有关如何使用具有不同名称的Dockerfile的文档。

此处有更多信息:http://docs.docker.io/en/latest/commandline/command/build/

答案 2 :(得分:6)

试试dockerfeed。它使用docker功能通过stdin构建上下文。我编写了剧本来解决我面对的问题。

要用另一个替换Dockerfile,你可以这样做:

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

瞧瞧。 Dockerfeed与docker build的效果相同。它使用Dockerfile打包源代码,但允许您将旧的Dockerfile替换为所需的Dockerfile。在此过程中不会创建任何文件,也不会更改任何源。生成的tar存档通过管道传输到docker,然后docker将其发送到docker守护程序。

<强>更新 在过去没有-f开关可用的情况下,这是一个有效的答案。使用docker版本1.5时,引入了此选项。现在您可以构建提供不同的Dockerfile,如下所示:

docker build -f other-Dockerfile .

答案 3 :(得分:6)

这应该可行,

docker build -t <tag-name> -f <file-name> .

答案 4 :(得分:4)

你也可以使用docker-compose来实现这一点。

在构建部分下的docker-compose.yml中,您可以指定存储dockerfile及其替代名称的目录,如下所示:

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

docker-compose

答案 5 :(得分:1)

如果您有多个 Dockerfile,就像大型项目中的情况一样,您可以指定要使用的相应的完全限定的 Dockerfile

docker build -t swagger_local -f /Users/123456/myrepos/storage/services/gateway/swagger/Dockerfile .

/Users/123456/myrepos/storage 运行的命令在子项目(在我的情况下为 swagger_local)中使用 Dockerfile 创建 services/gateway 图像

答案 6 :(得分:0)

假设您已经成功安装了docker工具箱,其中包括 docker-compose docker-machine 。这是我的docker-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 up时,您将为网络构建映像。

答案 7 :(得分:0)

我的案件在/tmp目录中,尽管我通过了-f <Dockerfile.foo>

,但有很多文件,并且docker尝试了其他文件。

(对我而言)最干净,最简单的解决方案是(将答案中的dockerfeed插入):

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

答案 8 :(得分:0)

Windows用户应尝试以下命令:

docker build -f absolute_docker_file_path点

例如:

docker build -f D:\ Code \ core-api \ API_TEST.Dockerfile。