我可以构建像
这样的Dockerfile 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
答案 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"
答案 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>
(对我而言)最干净,最简单的解决方案是(将答案中的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。