我在.dockerignore
文件中遇到了麻烦。这是我的项目结构:
file.sh
file.js
file.go
file.py
subdir/
file2.go
file2.py
.dockerignore
Dockerfile
根据.dockerignore
documentation:
(...)您可能想要指定要包含在上下文中的文件,而不是要排除的文件。为此,将*指定为第一个模式,然后指定一个或多个!异常模式。
并且:
以!开头的行(感叹号)可用于排除例外。
最后:
Docker还支持特殊的通配符字符串**,该字符串与任意数量的目录(包括零个)匹配。例如,** / *。go将排除在所有目录(包括构建上下文的根目录)中找到的所有以.go结尾的文件。
基于此,这是我的.dockerignore
文件:
# ignore everything
*
# whitelist
# ---------
# python files
!**/*.py
构建并运行容器并检查文件时,我得到了:
file.py
缺少subdir
目录,应包含subdir/file2.py
。如果我将!subdir/**/.py
添加到我的.dockerignore
中,它可以工作,但其想法是在任何子目录中包含任何.py
文件。
这是容器中应该存在的文件结构:
file.py
subdir/
file2.py
这是怎么回事?
答案 0 :(得分:0)
我发现了一些提到此确切问题的问题,例如:
Exception patterns in .dockerignore do not support wildcard directories dockerignore does not respect the "special wildcard **"(评论)
似乎很快就不会解决了:(