In the same directory I have two Dockerfiles
and I would like to add a separate .dockerignore
for each of them.
Currently, I have:
I don't think you can specify a different ignore file while doing a build. But since you are creating a separate file, you can write a shell script
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 .
If you need to use it with docker-compose
then you need to separate folders for ngixn and npm and then can have their individual .dockerignore
file. In your docker-compose.yml
file you need specify the name of the directory as the context
Multiple dockerignore files or specifying which dockerignore file to use is currently not supported by Docker.
See this issue on Github: Add support for specifying .dockerignore file with -i/--ignore
You can now use multiple .dockerignore
files in Docker.
Firstly you need to enable BuildKit mode; this is done either by setting:
export DOCKER_BUILDKIT=1
or by adding this configuration:
{ "features": { "buildkit": true } }
to the Docker daemon configuration in ~/.docker/daemon.json
and restarting the daemon. This will be enabled by default in future.
You also need to prefix the name of your .dockerignore
file with the Dockerfile name.
So if your Dockerfile is called OneApp.Dockerfile
the ignore file needs to be called OneApp.dockerignore
.
All taken from this comment: https://github.com/moby/moby/issues/12886#issuecomment-480575928