Dockerignore: игнорировать все, кроме файла и файла Docker
Таким образом, основная цель состояла в том, чтобы докеретировать приложение с большим количеством банок и поместить его в Elasticbeanstalk. Проблема связана с контекстом. Это немного глупо, чтобы добавить так много контекста в докер, если все, что мне нужно, это на самом деле один файл jar.
Я играл с файлом .dockerignore, но я потерялся. Я пытался использовать отрицание gitignore, но это не работает.
*
!Dockerfile
*/
!target/
target/*
!target/*.jar
Там также эта вещь с регулярным выражением, но похоже, что сложное регулярное выражение не поддерживается.
^((?!Dockerfile).)*$
Я также попытался выполнить поиск в stackoverflow, и эти два - все, что я нашел:
Этот вопрос может быть похож на второй, но я думаю, что это немного отличается, поскольку здесь я просто хочу включить в контекст один файл.
Любая помощь будет оценена.
Ответы
Ответ 1
Если вам нужно игнорировать все, кроме некоторых каталогов или файлов, а также игнорировать некоторые ненужные файлы внутри этих разрешенных каталогов, вы можете использовать следующий файл .dockerignore
:
# Ignore everything
**
# Allow files and directories
!/file.txt
!/src/**
# Ignore unnecessary files inside allowed directories
# This should go after the allowed directories
**/*~
**/*.log
**/.DS_Store
**/Thumbs.db
Ответ 2
Из ссылка dockerfile:
Beyond Gos filepath.Match rules, Docker также поддерживает специальную подстановочную строку **, которая соответствует любому количеству каталогов (включая ноль). Например, **/*. Go исключает все файлы, которые заканчиваются на .go, которые находятся во всех каталогах, включая корень контекста сборки.
Таким образом, строка, содержащая просто **, будет игнорировать все в том же каталоге, что и файл Docker.
Как и ожидалось, восклицательный знак может быть использован для ссылки на любые файлы, которые вы хотите отправить демону docker.
Ответ 3
Это может показаться странным, но если вам нужен только один файл jar, вы можете создать папку "docker" в вашей системе сборки, которая содержит ваш файл Docker. Когда вы запускаете свои сборки, скрипты сборки копируют один файл jar в "docker" , затем выполняем сборку докеров (изнутри папки "docker" ) и нажимаем на ваш реестр докеров, когда это делается.