Dockerfile是否总是必须放在构建上下文根目录中?

时间:2015-02-13 15:11:06

标签: docker dockerfile

假设我有一个Django项目并希望创建几个Dockerfiles,它们将使用不同的设置和系统包(不要与Python库混淆)。 要运行应用程序,我必须将完整的项目代码库复制到映像。

现在我看到了Setting up a docker / fig Mesos environment,它启发我将每个单独的Dockerfile放入项目根目录中的自己的目录中。

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

有什么方法可以重新定义Dockerfile名称或构建上下文根目录吗?

1 个答案:

答案 0 :(得分:6)

Docker 1.5引入了“指定要在构建中使用的Dockerfile”的选项:

  

指定要在构建

中使用的Dockerfile      

供稿人:Doug Davis - PR的链接

     

这可能是过去几年中最受欢迎的功能之一   months:能够指定要在docker构建中使用的文件   而不是依赖于默认的Dockerfile。 docker build -f允许   您可以在单个项目中定义多个Dockerfiles并指定   哪一个在构建时使用。如果您需要,这可能会有所帮助   用于测试和生产环境的独立Dockerfiles。

使用此功能,您不需要为多个Dockerfiles分隔文件夹,因此不再需要为每个Dockerfile提供不同的文件夹。只需在根文件夹中有多个Dockerfiles,并使用-f选项构建每个Dockerfiles。