149

我能够构建一个像

docker build -t deepak/ruby .

但是对于未命名的 DockerfileDockerfile

# 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
4

10 回答 10

324

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

docker build -f MyDockerfile .

或带有标签:

docker build -t mysuperimage -f MyDockerfile .
于 2016-05-13T10:55:16.907 回答
45

这个作品

docker build doronaviguy/helloworld -f SomeDockerFile .

Docker 构建文档

于 2015-09-10T08:36:15.810 回答
25

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/

于 2013-07-05T16:13:49.840 回答
17

尝试dockerfeed。它使用 docker 功能通过标准输入构建上下文。我编写脚本是为了准确解决我自己面临的问题。

要将 Dockerfile 替换为其他文件,请执行以下操作:

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

瞧。Dockerfeed 与docker build. 它将源代码与 Dockerfile 打包在一起,但允许您将旧的 Dockerfile 替换为所需的文件。在此过程中不创建文件,不更改源。生成的 tar 归档文件通过管道传送到 docker 中,而 docker 又将其发送到 docker 守护进程。

更新: 在过去没有-f可用的开关时,这是一个有效的答案。在 docker 版本 1.5 中引入了这个选项。现在您可以像这样构建提供不同的 Dockerfile:

docker build -f other-Dockerfile .
于 2014-10-27T13:29:37.297 回答
9

这应该工作,

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

于 2021-04-23T06:48:12.627 回答
7

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

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

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

码头工人撰写

于 2017-03-02T13:06:10.160 回答
4

Windows 用户应尝试以下命令:

docker build -f absolute_docker_file_path 点

例如 :

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

于 2020-10-06T12:47:41.947 回答
1

我的案例在/tmp目录中,并且有很多文件,尽管我通过了其他文件,但 docker 尝试使用其他文件-f <Dockerfile.foo>

最干净和最简单(对我来说)的解决方案是(而dockerfeed不是上面的答案):

cat DockerFile.debian.foo | docker build -t debian.foo -
于 2018-12-12T11:53:30.723 回答
1

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

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

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

于 2021-02-08T11:29:29.197 回答
0

假设您已经成功安装了包括docker-composedocker-machine在内的 docker 工具箱。这是我的 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 时,您将为 Web 构建图像。

于 2018-07-31T10:01:13.007 回答