我有一个.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
当然,它们必须与原始源文件位于同一目录中。
我尝试了几种方法,但没有成功。
UP:我不知道将在public/
目录中创建多少个子文件夹,以及目录结构的深度。
答案 0 :(得分:1)
我认为您可以依靠这样的.dockerignore来实现您想要的目标:
public/*
!public/subfolder
public/subfolder/*
!public/other
public/other/*
!**/*.json
棘手的是,此文件的第一行是public/*
,而不是public
也不是*
(否则后面的!...
行将不起作用)。 / p>
还请注意,您可能希望自动生成一个.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