我遇到了问题.dockerignore
文件。这是我的项目结构:
file.sh
file.js
file.go
file.py
subdir/
file2.go
file2.py
.dockerignore
Dockerfile
根据.dockerignore文档 https://docs.docker.com/engine/reference/builder/#dockerignore-file:
(...)您可能想要指定要在上下文中包含哪些文件,而不是要排除哪些文件。要实现此目的,请将 * 指定为第一个模式,后跟一个或多个 !异常模式。
And:
以 ! 开头的行(感叹号)可用于排除例外。
Finally:
Docker 还支持特殊的通配符字符串 ** ,它可以匹配任意数量的目录(包括零)。例如, **/*.go 将排除在所有目录(包括构建上下文的根目录)中找到的所有以 .go 结尾的文件。
基于此,这是我的.dockerignore
file:
# ignore everything
*
# whitelist
# ---------
# python files
!**/*.py
当我构建并运行容器并检查文件时,我得到以下信息:
file.py
The subdir
目录丢失,subdir/file2.py
应包括在内。如果我添加它就有效!subdir/**/.py
to my .dockerignore
,但想法是包括任何.py
任何子目录中的文件。
这是容器中应该存在的文件结构:
file.py
subdir/
file2.py
这里发生了什么?
我发现了一些提到这个确切问题的问题,例如:
.dockerignore 中的异常模式不支持通配符目录 https://github.com/moby/moby/issues/30018
dockerignore 不尊重“特殊通配符 **” https://github.com/moby/moby/issues/21433#issuecomment-222669110(评论)
而且似乎不会很快修复:(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)