Dockerignore: позволяет добавить только определенное расширение, например * .json, из любой подпапки - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть файл .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 голосов
/ 09 сентября 2018

Я думаю, что вы можете достичь того, чего хотите, полагаясь на один такой .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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...