Docker 同一目录中有多个.dockrignore文件

Docker 同一目录中有多个.dockrignore文件,docker,Docker,在同一个目录中,我有两个dockerfile,我想为每个文件添加一个单独的.dockergnore 目前,我有: Dockerfile.npm Dockerfile.nginx 但是我可以要这样的吗 .dockerignore.npm .dockerignore.nginx 我不认为在进行构建时可以指定不同的忽略文件。但是,由于您要创建一个单独的文件,因此可以编写shell脚本 构建nginx.sh #!/bin/bash ln -fs .dockerignore.nginx .docker

在同一个目录中,我有两个
dockerfile
,我想为每个文件添加一个单独的
.dockergnore

目前,我有:

Dockerfile.npm
Dockerfile.nginx
但是我可以要这样的吗

.dockerignore.npm
.dockerignore.nginx

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

构建nginx.sh

#!/bin/bash
ln -fs .dockerignore.nginx .dockerignore
docker build -f Dockerfile.nginx -t nginxbuild .
#!/bin/bash
ln -fs .dockerignore.npm .dockerignore
docker build -f Dockerfile.npm -t npmbuild .
build\u npm.sh

#!/bin/bash
ln -fs .dockerignore.nginx .dockerignore
docker build -f Dockerfile.nginx -t nginxbuild .
#!/bin/bash
ln -fs .dockerignore.npm .dockerignore
docker build -f Dockerfile.npm -t npmbuild .

如果需要将其与
docker compose
一起使用,则需要为ngixn和npm分离文件夹,然后可以拥有各自的
.dockringore
文件。在您的
docker compose.yml
文件中,您需要指定目录的名称作为上下文

多个DockerInore文件,或者指定docker当前不支持使用哪个DockerInore文件


在Github上查看此问题:

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

首先,您需要启用BuildKit模式;这可以通过设置:

export DOCKER\u BUILDKIT=1

或通过添加此配置:

{“功能”:{“buildkit”:true}

~/.Docker/daemon.json
中的Docker守护程序配置,然后重新启动守护程序。这将在将来默认启用

您还需要在
.dockerginore
文件名前面加上Dockerfile名称

因此,如果Dockerfile被称为
OneApp.Dockerfile
,则需要调用忽略文件
OneApp.DockerInore


所有内容摘自此评论:

这看起来是一个不错的解决方案,但我想稍后在
docker compose
文件中使用它们。有没有办法在撰写文件中使用此选项?更新答案使用docker compose提出的解决方案将导致
Dockerfile
出现问题。Dockerfile没有父目录的上下文,因此您希望能够
复制
例如包装器是邪恶的>因此如果您的Dockerfile名为OneApp.Dockerfile忽略文件需要名为OneApp.Dockerfile不应该是
OneApp.Dockerfile.Dockerfile
?不,它不是
.Dockerfile
,这是一个
.dockerginore
文件。@BrianDiPalma链接的问题只提到将
.dockerginore
附加到指定的docker文件中(正如@koshmaster所说)。关于OneApp.dockrignore的信息在哪里?@briandiplma和@stackblow,如果有帮助的话,我已经成功地实现了这一点。filname必须是
OneApp.Dockerfile.dockerginore
@koshmaster,正如我在评论中所说,我已经实现了。也许代码只是检查开始和文件扩展名。