同一目录中有多个.dockerignore文件

Lum*_*nce 7 docker

在同一个目录中我有两个Dockerfiles,我想.dockerignore为每个目录添加一个单独的目录.

目前,我有:

Dockerfile.npm
Dockerfile.nginx
Run Code Online (Sandbox Code Playgroud)

但我能有这样的事吗?:

.dockerignore.npm
.dockerignore.nginx
Run Code Online (Sandbox Code Playgroud)

Tar*_*ani 12

在进行构建时,我认为您不能指定不同的忽略文件.但是,由于您要创建单独的文件,因此可以编写shell脚本

build_nginx.sh

#!/bin/bash
ln -fs .dockerignore.nginx .dockerignore
docker build -f Dockerfile.nginx -t nginxbuild .
Run Code Online (Sandbox Code Playgroud)

build_npm.sh

#!/bin/bash
ln -fs .dockerignore.npm .dockerignore
docker build -f Dockerfile.npm -t npmbuild .
Run Code Online (Sandbox Code Playgroud)

如果你需要使用它,docker-compose那么你需要为ngixn和npm分隔文件夹,然后可以拥有它们各自的.dockerignore文件.在您的docker-compose.yml文件中,您需要指定目录的名称作为上下文


Bri*_*lma 10

您现在可以.dockerignore在 Docker 中使用多个文件。

首先需要开启BuildKit模式;这是通过设置完成的:

export DOCKER_BUILDKIT=1

或通过添加此配置:

{ "features": { "buildkit": true } }

到 Docker 守护程序配置~/.docker/daemon.json并重新启动守护程序。这将在未来默认启用。

您还需要.dockerignore使用 Dockerfile 名称作为文件名的前缀。

因此,如果您的 Dockerfile 被调用,OneApp.Dockerfile则需要调用忽略文件OneApp.dockerignore

全部取自此评论:https : //github.com/moby/moby/issues/12886#issuecomment-480575928

  • @BrianDiPalma 和 @stackblow,如果有帮助的话我已经成功实现了这个。文件名必须是“OneApp.Dockerfile.dockerignore” (3认同)
  • > 因此,如果您的 Dockerfile 名为 OneApp.Dockerfile,则忽略文件需要名为 OneApp.dockerignore 不应该是 `OneApp.Dockerfile.dockerignore` 吗? (2认同)