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

问题描述 投票:1回答:1

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

docker dockerfile
1个回答
1
投票

我认为你可以依靠一个这样的.dockerignore来实现你想要的东西:

public/*
!public/subfolder
public/subfolder/*
!public/other
public/other/*
!**/*.json

棘手的是,这个文件的第一行是public/*但不是public也不是*(否则!...后续行将不起作用)。

另请注意,您可能希望自动生成一个这样的.dockerignore,以应对可能的树结构更改。

例如:

跟-dock而ignore.是

#!/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
© www.soinside.com 2019 - 2024. All rights reserved.