我有一个.dockerignore文件,但对于一个用例,我想在命令行指定.dockerignore的内容,如:
docker build --ignore="node_modules" -t foo .
有没有办法从命令行执行此操作?我没有在文档中看到这个:https://docs.docker.com/engine/reference/commandline/build/#build-with--
不,docker build
不提供.dockerignore
file的替代品。
这就是为什么我通常保持指向实际.dockerignore
的符号链接.dockerignore_official
,除了某些情况,我将符号链接切换到.dockerignore_module
。
这是一种解决方法,但这允许我对我可能需要的不同版本的dockerignore进行版本控制,并在两者之间进行选择。
2019年4月更新:正如Alba Mendez在the comments中所提到的,PR 901应该提供帮助:
dockerfile:添加dockerignore覆盖支持
前端将首先检查
<path/to/Dockerfile>.dockerignore
,如果找到,它将被用来代替根.dockerignore
。
见moby/buildkit
commit b9db1d2。
它在Docker v19.03.0 beta1,Alba发布了example here:
您需要启用Buildkit模式才能使用i
$ export DOCKER_BUILDKIT=1
$ echo "FROM ubuntu \n COPY . tmp/" > Dockerfile
$ cp Dockerfile Dockerfile2
$ touch foo bar
$ echo "foo" > .dockerignore
$ echo "bar" > Dockerfile2.dockerignore
$ docker build -t container1 -f Dockerfile .
$ docker build -t container2 -f Dockerfile2 .
$ docker run container1 ls tmp
Dockerfile
Dockerfile2
Dockerfile2.dockerignore
bar
$ docker run container2 ls tmp
Dockerfile
Dockerfile2
Dockerfile2.dockerignore
foo