我有一个.dockerignore文件,但对于一个用例,我想在命令行指定.dockerignore的内容,如下所示:
docker build --ignore="node_modules" -t foo .
有没有一种方法可以从命令行做到这一点?我在docs中没有看到这个:https://docs.docker.com/engine/reference/commandline/build/#build-with--
wfveoks01#
2018:不,docker build不提供.dockerignore文件的替代方案。这就是为什么我通常保持一个符号链接.dockerignore指向实际的.dockerignore_official,除了某些情况下,我把符号链接切换到.dockerignore_module。这是一种变通方法,但它允许我对可能需要的不同版本的dockerignore进行版本化,并在两者之间进行选择。2019年4月更新:正如Alba Mendez在评论中提到的,PR 901应该有助于:
docker build
.dockerignore
.dockerignore_official
.dockerignore_module
前端将首先检查<path/to/Dockerfile>.dockerignore,如果找到,将使用它来代替根.dockerignore。参见moby/buildkit commit b9db1d2。它在Docker v19.03.0 beta1中,Alba在这里发布了一个示例:您需要启用Buildkit模式以用途:
<path/to/Dockerfile>.dockerignore
moby/buildkit
$ 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
2019年8月更新:这现在在Docker 19.03中,下面是来自Tõnis Tiigi的注解:
注意:2023年5月发布的问题37129“添加对多个(命名)构建上下文的支持”报告,现在支持:
docker build (23+)
docker buildx build
另见“Build docker image using different directory contexts”
1条答案
按热度按时间wfveoks01#
2018:不,
docker build
不提供.dockerignore
文件的替代方案。这就是为什么我通常保持一个符号链接
.dockerignore
指向实际的.dockerignore_official
,除了某些情况下,我把符号链接切换到.dockerignore_module
。这是一种变通方法,但它允许我对可能需要的不同版本的dockerignore进行版本化,并在两者之间进行选择。
2019年4月更新:正如Alba Mendez在评论中提到的,PR 901应该有助于:
dockerfile:添加dockerignore覆盖支持
前端将首先检查
<path/to/Dockerfile>.dockerignore
,如果找到,将使用它来代替根.dockerignore
。参见
moby/buildkit
commit b9db1d2。它在Docker v19.03.0 beta1中,Alba在这里发布了一个示例:
您需要启用Buildkit模式以用途:
2019年8月更新:这现在在Docker 19.03中,下面是来自Tõnis Tiigi的注解:
注意:2023年5月发布的问题37129“添加对多个(命名)构建上下文的支持”报告,现在支持:
docker build (23+)
/docker buildx build
另见“Build docker image using different directory contexts”