我不确定如何命名Dockerfiles。许多GitHub用户使用Dockerfile,但没有文件扩展名。我给他们一个名字和扩展;如果有,那又怎样?或者我就叫它Dockerfile?


当前回答

Dockerfile有两个主要的命名约定:

1. 使用默认Dockerfile:

保持简单,这种方法适合简单的、独立的、定义良好的项目。

$ docker build -f ./Dockerfile.Dockerfile .

2. 使用自定义Dockerfile:

这种方法保持自定义,使开发人员熟悉应用程序上下文,方便了文件操作,并提高了调试能力,特别是在多个dockerfile的情况下。

$ docker build -t <containername> . -f <mycustomdockerfile>.Dockerfile

温馨提醒:

这些约定同样适用于常见的docker镜像构建命令,如“docker image build”和“docker-compose build”。

其他回答

我知道这是一个老问题,有很多答案,但我惊讶地发现,没有人建议在官方文件中使用的命名惯例:

$ docker build -f dockerfiles/Dockerfile.debug -t myapp_debug $ docker build -f dockerfiles/Dockerfile。Prod -t myapp_prod。 上面的命令将构建两次当前构建上下文(由.指定),一次使用Dockerfile的调试版本,一次使用生产版本。

总之,如果在构建上下文的根目录中有一个名为Dockerfile的文件,那么它将被自动拾取。如果同一个构建上下文需要多个Dockerfile,建议的命名约定是:

Dockerfile.<purpose>

这些dockerfile可以位于构建上下文的根目录中,也可以位于子目录中,以使根目录更加整洁。

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

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

当你只使用目录名构建时,Docker会找到Dockerfile。例句:

docker build -f ./db .

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

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

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

Dockerfile有两个主要的命名约定:

1. 使用默认Dockerfile:

保持简单,这种方法适合简单的、独立的、定义良好的项目。

$ docker build -f ./Dockerfile.Dockerfile .

2. 使用自定义Dockerfile:

这种方法保持自定义,使开发人员熟悉应用程序上下文,方便了文件操作,并提高了调试能力,特别是在多个dockerfile的情况下。

$ docker build -t <containername> . -f <mycustomdockerfile>.Dockerfile

温馨提醒:

这些约定同样适用于常见的docker镜像构建命令,如“docker image build”和“docker-compose build”。

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

   docker/app.Dockerfile
   docker/nginx.Dockerfile

构建:

   docker build  -f ./docker/app.Dockerfile .
   docker build  -f ./docker/nginx.Dockerfile .