从命令行指定dockerignore

问题描述 投票:2回答:1

我有一个.dockerignore文件,但对于一个用例,我想在命令行指定.dockerignore的内容,如:

docker build --ignore="node_modules" -t foo . 

有没有办法从命令行执行此操作?我没有在文档中看到这个:https://docs.docker.com/engine/reference/commandline/build/#build-with--

docker dockerfile
1个回答
3
投票

不,docker build不提供.dockerignore file的替代品。

这就是为什么我通常保持指向实际.dockerignore的符号链接.dockerignore_official,除了某些情况,我将符号链接切换到.dockerignore_module

这是一种解决方法,但这允许我对我可能需要的不同版本的dockerignore进行版本控制,并在两者之间进行选择。


2019年4月更新:正如Alba Mendezthe 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
© www.soinside.com 2019 - 2024. All rights reserved.