我有一个 .dockerignore 文件,但对于一个用例,我想在命令行指定 .dockerignore 的内容,例如:
docker build --ignore="node_modules" -t foo .
Run Code Online (Sandbox Code Playgroud)
有没有办法从命令行执行此操作?我没有在文档中看到这一点:https : //docs.docker.com/engine/reference/commandline/build/#build-with--
不,docker build不提供.dockerignore文件的替代品。
这就是为什么我通常会保留一个.dockerignore指向实际的符号链接.dockerignore_official,除了某些情况,我将符号链接切换为.dockerignore_module。
这是一种解决方法,但这允许我对可能需要的不同版本的 dockerignore 进行版本控制,并在两者之间进行选择。
2019 年 4 月更新:正如Alba Mendez在评论中提到的,PR 901应该会有所帮助:
dockerfile:添加 dockerignore 覆盖支持
前端将首先检查
<path/to/Dockerfile>.dockerignore,如果找到,它将代替 root 使用.dockerignore。
它在Docker v19.03.0 beta1 中,Alba在这里发布了一个示例:
您需要启用 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
Run Code Online (Sandbox Code Playgroud)
2019 年 8 月更新:现在在 Docker 19.03 中,以下来自Tõnis Tiigi 的评论:
- #12886(评论)如果存储库包含许多文件,则允许为每个 Dockerfile 设置一个 dockerignore 文件。(请注意,这是最初问题的确切描述)
- BuildKit 自动忽略未使用的文件,自动消除不同组文件需要相互忽略的问题。
- 可以通过多阶段构建并使用构建参数定义模式更改来实现相同 Dockerfile 为不同“模式”构建(例如,开发与生产)使用不同文件集的情况。
| 归档时间: |
|
| 查看次数: |
5461 次 |
| 最近记录: |