在同一目录中,我有两个Dockerfiles
,我想为每个.dockerignore
添加一个单独的Dockerfile.npm
Dockerfile.nginx
。
目前,我有:
.dockerignore.npm
.dockerignore.nginx
但我可以这样做吗?:
CSS
答案 0 :(得分:10)
我认为您在构建时不能指定不同的忽略文件。但是,由于您要创建单独的文件,因此可以编写shell脚本
<强> build_nginx.sh 强>
#!/bin/bash
ln -fs .dockerignore.nginx .dockerignore
docker build -f Dockerfile.nginx -t nginxbuild .
<强> build_npm.sh 强>
#!/bin/bash
ln -fs .dockerignore.npm .dockerignore
docker build -f Dockerfile.npm -t npmbuild .
如果您需要将其与docker-compose
一起使用,则需要为ngixn和npm分隔文件夹,然后才能拥有各自的.dockerignore
文件。在docker-compose.yml
文件中,您需要指定目录名称作为上下文
答案 1 :(得分:1)
Docker当前不支持多个dockerignore文件或指定要使用的dockerignore文件。
在Github上看到此问题:Add support for specifying .dockerignore file with -i/--ignore
答案 2 :(得分:1)
您现在可以在Docker中使用多个.dockerignore
文件。
首先,您需要启用BuildKit模式;可以通过以下方式设置:
export DOCKER_BUILDKIT=1
或添加以下配置:
{ "features": { "buildkit": true } }
进入~/.docker/daemon.json
中的Docker守护程序配置,然后重新启动该守护程序。将来会默认启用此功能。
您还需要在.dockerignore
文件名前加上Dockerfile名称。
因此,如果您的Dockerfile被称为OneApp.Dockerfile
,则忽略文件需要被命名为OneApp.dockerignore
。
全部摘自此评论:https://github.com/moby/moby/issues/12886#issuecomment-480575928