我有一个.dockerignore
文件,并且我试图允许Docker仅上传*.json
文件,但可以从任何子文件夹上传。
例如,对于下一个文件结构:
public/readme.md
public/subfolder/a.json
public/subfolder/b.json
public/other/c.json
public/other/file.txt
我期望在图像中仅看到json文件:
public/subfolder/a.json
public/subfolder/b.json
public/other/c.json
当然,它们必须位于与原始源相同的目录中。
我尝试了几种方法,但没有成功。
上:我不知道在
public/
目录中将创建多少个子文件夹,目录结构的深度。
最佳答案
我认为您可以依靠这样的.dockerignore来实现所需的目标:
public/*
!public/subfolder
public/subfolder/*
!public/other
public/other/*
!**/*.json
棘手的是,此文件的第一行是
public/*
,但不是public
也不是*
(否则,后续的!...
行将不起作用)。还请注意,您可能希望自动生成一个.dockerignore,以应对可能的树结构更改。
例如:
gen-dockerignore.sh
#!/usr/bin/env bash
{ echo '*' ; # header of the .dockerignore - to be changed if need be
find public -type d -exec echo -en "!{}\n{}/*\n" \; ;
echo '!**/*.json' ; } > .dockerignore
$ ./gen-dockerignore.sh
将输出以下文件:.dockerignore
*
!public
public/*
!public/other
public/other/*
!public/subfolder
public/subfolder/*
!**/*.json
关于docker - Dockerignore:仅允许从任何子文件夹添加特定扩展名,例如* .json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52247595/