如何命名Dockerfiles


Answers:


165

如果要在hub.docker.com使用自动生成器,请不要更改dockerfile的名称。不要对docker文件使用扩展名,请将其保留为空。文件名应该是:(完全没有扩展名)

Dockerfile

但是,您也可以像下面这样...

dev.Dockerfileuat.Dockerfileprod.Dockerfile等。

您可以在VS Code上使用<purpose>.Dockerfile它,并且它可以正常工作。


83
当您在同一目录中有多个Dockerfile怎么办?
Visgean Skeloru '16年

@VisgeanSkeloru尽管有点麻烦,但您可以根据需要将它们放在不同的目录中,无论我认为它在哪里都已经建立了惯例
orustammanapov

2
@VisgeanSkeloru在同一目录中没有多个Dockerfile。含目录成为上下文docker build命令,这意味着每个图像将被不必要地如果另一图像的dockerfile改变重建。
托马斯

6
@Thomas有时您需要在同一目录中放置多个Dockerfile,以便在不同的容器之间共享公用文件,因为Docker上下文不允许访问“ ../some-common-stuff”
Devis

是“ D”必须大写还是没关系?
NoName


27

我认为您应该为每个容器都包含一个Dockerfile(无扩展名)的目录。例如:

  /db/Dockerfile
  /web/Dockerfile
  /api/Dockerfile

当您仅使用目录名称进行构建时,Docker将找到Dockerfile。例如:

docker build -f ./db .

它会根据您的示例构建3个容器吗?
alvas

@alvas是的
garryp

4
很多情况下,这还不够好。Docker无法查看文件。例如目标,生成等
Cyva

那么我们可以使用docker-compose命令一次运行这3个docker文件吗?
Yogi Ghorecha

16

如果要在hub.docker.com上使用自动生成器,则必须为 Dockerfile。所以那里:)


3
我认为问题的范围更广。也许您可以为不使用autobuilder的个人提供更多信息,以使此答案更加完整。
乔什·哈布达斯

16

看来这是真的,但就我个人而言,这似乎是一个糟糕的设计。当然,具有默认名称(带有扩展名),但允许使用其他名称,并可以为命令指定docker文件的名称。

拥有扩展名也很不错,因为它允许将应用程序与该扩展名类型相关联。当我在MacOSX中单击Dockerfile时,它将其视为Unix可执行文件并尝试运行它。

如果Docker文件具有扩展名,我可以告诉操作系统使用特定的应用程序(例如我的文本编辑器应用程序)启动它们。我不确定,但是当前的行为也可能与文件权限有关。


15

我在同一目录中创建了两个Dockerfile,

# vi one.Dockerfile
# vi two.Dockerfile

来构建两个Dockerfile使用,

# docker build . -f one.Dockerfile
# docker build . -f two.Dockerfile

注意:您应该在当前的工作目录中。


10

我给他们起个名字和扩展名吗?如果是这样呢?

您可以根据自己的喜好命名Dockerfile。默认文件名是Dockerfile(不带扩展名),使用默认值可以使使用容器时的各种任务更加容易。

根据您的特定要求,您可能希望更改文件名。例如,如果要针对多种体系结构进行构建,则可能希望添加一个扩展名,以指示该体系结构为resin.io团队为HAProxy容器完成的多容器ARM示例

Dockerfile.aarch64
Dockerfile.amd64
Dockerfile.armhf
Dockerfile.armv7hf
Dockerfile.i386
Dockerfile.i386-nlp
Dockerfile.rpi

在提供的示例中,每个Dockerfile均从不同的,特定于体系结构的上游映像构建。使用命令行构建容器时,可以使用该--file, -f选项指定用于构建的特定Dockerfile 。


1
我喜欢使用扩展来指示体系结构(或其他)。与其他答案不同,所有Dockerfile都非常简单,很难在一个混乱的大目录中找到。他们自然地在一起排序。
Mike Sherrill'Cat Recall'19

3

Dockerfile如果您只有一个docker文件(每个目录),则很好。如果您在同一目录中需要多个docker文件,则可以使用所需的任何标准-如果您有充分的理由。在最近的项目中,存在AWS docker文件和本地开发环境文件,因为环境差异很大:

Dockerfile Dockerfile.aws


我也看到过这种用于指定体系结构的方法。例如,将放置在Dockerfile.armv7hf旁边Dockerfile.i386
乔什·哈布达斯

1

Dockerfile(自定义名称和文件夹):

   docker/app.Dockerfile
   docker/nginx.Dockerfile

建立:

   docker build  -f ./docker/app.Dockerfile .
   docker build  -f ./docker/nginx.Dockerfile .
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.