Dockerfile是否总是被放置在构build上下文根中?

假设我有一个Django项目,并且想创build几个Dockerfiles,这些Dockerfiles将使用不同的设置和系统包(不要和Python库混淆)。 为了运行应用程序,我必须将完整的项目代码库复制到图像。

现在我已经看到了build立一个docker / fig Mesos环境 ,这个环境激励我把每个单独的Dockerfile放到项目根目录下的自己的目录中。

docker build env1/可预测地创build一个env1的tarball,并使用它来构build图像。

有什么办法可以重新定义Dockerfile名称或build立上下文根?

Docker 1.5引入了一个选项来指定要在构build中使用的Dockerfile:

指定要在构build中使用的Dockerfile

供稿人:Doug Davis – 链接到PR

这可能是过去几个月最受欢迎的function之一:能够指定在Docker版本中使用的文件,而不是依赖默认的Dockerfile。 docker build -f允许你在一个项目中定义多个Dockerfiles,并指定在构build时使用哪一个。 如果您需要单独的Docker文件来进行testing和生产环境,这会很有帮助。

使用此function,您不需要为多个Docker文件分开文件夹,因此不需要为每个Dockerfile拥有不同的文件夹。 只需在根文件夹中有多个Docker文件,并用-f选项构build每个Docker文件。