Итак, основная цель заключалась в том, чтобы докеризовать приложение fat jar и поместить его в Elasticbeanstalk. Проблема в контексте. Немного глупо добавлять так много контекста в докер, если все, что мне нужно, это единственный файл jar.
Я играл с файлом .dockerignore, но я потерялся. Я пытался использовать отрицание gitignore, но это не сработало.
*
!Dockerfile
*/
!target/
target/*
!target/*.jar
То же самое и с регулярным выражением, но похоже, что сложное регулярное выражение не поддерживается.
^((?!Dockerfile).)*$
Я также пробовал искать в stackoverflow, и это все, что я нашел:
Этот вопрос может быть похож на второй, но я думаю, что это небольшая разница, поскольку здесь я просто хочу включить один файл в контекст.
Любая помощь будет оценена по достоинству.
Ответы:
Если вам нужно игнорировать все, кроме некоторых каталогов или файлов, а также игнорировать некоторые ненужные файлы внутри этих разрешенных каталогов, вы можете использовать следующий
.dockerignore
файл:источник
*
на первую строку (вместо**
). Цитата: «вы можете указать, какие файлы включать в контекст, а не какие исключать. Для этого укажите*
в качестве первого шаблона, за которым следует один или несколько!
шаблонов исключения».Из ссылки на файл докеров :
Таким образом, строка, содержащая просто **, будет игнорировать все, что находится в том же каталоге, что и файл Docker.
Как и ожидалось, восклицание можно использовать для ссылки на любые файлы, которые вы хотите отправить демону докера.
источник
**
шел в начало файла, иначе исключения будут проигнорированы. Docker использует последнее подходящее правило как «последнее» правило, поэтому, если**
оно последнее, оно будет соответствовать всему.**
в первую строку и!foo
в следующую строку, еслиfoo
это единственный файл, который вы хотите включить.Это может показаться странным, но если все, что вам нужно, - это один файл jar, вы можете создать в своей системе сборки папку «docker», содержащую ваш Dockerfile. Когда вы запускаете свои сборки, попросите сценарии сборки скопировать один файл jar в «докер», затем выполнить сборку образа докера (из папки «докер») и по завершении отправить в реестр докеров.
источник