Dockerignore:仅允许从任何子文件夹添加特定扩展名,例如* .json

时间:2018-09-09 18:45:38

标签: docker dockerfile

我有一个.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/目录中创建多少个子文件夹,以及目录结构的深度。

1 个答案:

答案 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