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

xyz*_*man 3 docker dockerfile

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

现在我已经看到设置一个docker/fig Mesos环境,这启发我将每个单独的Dockerfile放入项目根目录中的自己的目录中.

docker build env1/可以预见地创建一个tarball env1并使用它来构建图像.

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

Jav*_*oso 6

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

指定要在构建中使用的Dockerfile

供稿人:Doug Davis - PR的链接

这可能是过去几个月中请求最多的功能之一:能够指定要在docker构建中使用的文件,而不是依赖于默认的Dockerfile.docker build -f允许您在单个项目中定义多个Dockerfiles,并指定在构建时使用哪个Dockerfiles.如果您需要单独的Dockerfiles用于测试和生产环境,这将非常有用.

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