Подтвердить что ты не робот

Dockerignore: игнорировать все, кроме файла и файла Docker

Таким образом, основная цель состояла в том, чтобы докеретировать приложение с большим количеством банок и поместить его в Elasticbeanstalk. Проблема связана с контекстом. Это немного глупо, чтобы добавить так много контекста в докер, если все, что мне нужно, это на самом деле один файл jar.

Я играл с файлом .dockerignore, но я потерялся. Я пытался использовать отрицание gitignore, но это не работает.

*
!Dockerfile
*/
!target/
target/*
!target/*.jar

Там также эта вещь с регулярным выражением, но похоже, что сложное регулярное выражение не поддерживается.

^((?!Dockerfile).)*$

Я также попытался выполнить поиск в stackoverflow, и эти два - все, что я нашел:

Этот вопрос может быть похож на второй, но я думаю, что это немного отличается, поскольку здесь я просто хочу включить в контекст один файл.

Любая помощь будет оценена.

4b9b3361

Ответ 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" ) и нажимаем на ваш реестр докеров, когда это делается.