我不确定如何命名Dockerfiles。 GitHub上的许多人使用Dockerfile
而没有文件扩展名。我给他们一个名字和名字吗?如果是这样的话?或者我只是称他们为Dockerfile
?
答案 0 :(得分:86)
如果要在hub.docker.com上使用autobuilder,请不要更改dockerfile的名称。不要使用docker文件的扩展名,将其保留为null。 文件名应该是:(根本没有扩展名)
Dockerfile
但是,你也可以这样做......
dev.Dockerfile
,uat.Dockerfile
,prod.Dockerfile
等
在VS Code上,您可以使用<purpose>.Dockerfile
,它可以正常工作。
答案 1 :(得分:35)
dev.Dockerfile
,test.Dockerfile
,build.Dockerfile
等
在VS Code上我使用<purpose>.Dockerfile
并且它被正确识别。
答案 2 :(得分:23)
我认为每个容器应该有一个目录,其中包含一个Dockerfile(没有扩展名)。例如:
/db/Dockerfile
/web/Dockerfile
/api/Dockerfile
当您构建时只使用目录名称,Docker将找到Dockerfile。 e.g:
docker build -f ./db .
答案 3 :(得分:15)
如果您想在hub.docker.com上使用autobuilder,则必须 Dockerfile
。所以:)
答案 4 :(得分:14)
看来这是真的,但就个人而言,在我看来,设计很差。当然,有一个默认名称(带扩展名)但允许其他名称,并有办法为命令指定docker文件的名称。
拥有扩展名也很不错,因为它允许用户将应用程序与该扩展类型相关联。当我点击MacOSX中的Dockerfile时,它将其视为Unix可执行文件并尝试运行它。
如果Docker文件有扩展名,我可以告诉操作系统使用特定应用程序启动它们,例如我的文本编辑应用程序我不确定,但当前行为也可能与文件permisssions有关。
答案 5 :(得分:9)
我知道这是一个老问题,有很多答案,但是我很惊讶地发现没有人建议使用official documentation中使用的命名约定:
$ docker build -f dockerfiles/Dockerfile.debug -t myapp_debug . $ docker build -f dockerfiles/Dockerfile.prod -t myapp_prod .
以上命令将两次构建当前的构建上下文(由
.
指定),一次使用Dockerfile
的调试版本,一次使用生产版本。
总而言之,如果在构建上下文的根目录中有一个名为Dockerfile
的文件,它将被自动提取。如果相同的构建上下文需要多个Dockerfile
,则建议的命名约定为:
Dockerfile.<purpose>
这些dockerfile可以位于构建上下文的根目录或子目录中,以使根目录更加整洁。
答案 6 :(得分:8)
我给他们一个名字和扩展名吗?如果可以的话?
您可以根据自己的喜好命名Dockerfile。默认文件名是Dockerfile
(不带扩展名),使用默认文件名可以使处理容器时的各种任务更加容易。
根据您的特定要求,您可能希望更改文件名。例如,如果您要针对多种体系结构进行构建,则可能希望添加一个扩展名,以指示resin.io团队为multi-container ARM example的HAProxy容器所做的工作:
Dockerfile.aarch64
Dockerfile.amd64
Dockerfile.armhf
Dockerfile.armv7hf
Dockerfile.i386
Dockerfile.i386-nlp
Dockerfile.rpi
在提供的示例中,每个Dockerfile均从不同的,特定于体系结构的上游映像构建。使用命令行构建容器时,可以使用--file, -f
option指定用于构建的特定Dockerfile。
答案 7 :(得分:3)
Dockerfile
会很好。如果在同一目录中需要多个docker文件,则可以使用任何标准 -
如果你有充分的理由。在最近的项目中,有AWS docker文件和本地开发环境文件,因为环境差异很大:
Dockerfile
Dockerfile.aws
答案 8 :(得分:3)
我在同一目录中创建了两个Dockerfile,
# vi one.Dockerfile
# vi two.Dockerfile
构建两个使用的Dockerfile,
# docker build . -f one.Dockerfile
# docker build . -f two.Dockerfile
注意:您应该在当前的工作目录中。
答案 9 :(得分:2)
Dockerfile(自定义名称和文件夹):
docker/app.Dockerfile
docker/nginx.Dockerfile
内部版本:
docker build -f ./docker/app.Dockerfile .
docker build -f ./docker/nginx.Dockerfile .
答案 10 :(得分:1)
Dockerfile 有两种主要的命名约定。
1. 使用默认的 Dockerfile:
为简单起见,这种方法适合独立的、易于理解的项目[单个、定义明确、经过测试且可工作的 dockerfile]。
$ docker build -f ./Dockerfile.Dockerfile .
2. 使用自定义 dockerfile:
保持定制,这种方法有助于在测试和调试 [多个 dockerfiles] 中带来熟悉上下文、易于搜索、易于编辑、潜在的灵活性和实验范围。
$ docker build -t <containername> . -f <mycustomdockerfile>.Dockerfile
提醒:
这些约定也适用于所有其他常见的 docker 镜像构建命令,包括流行的“docker-compose build”。