Генератор .dockerignore

Отметьте, что есть в проекте, и скопируйте .dockerignore. Он не пускает в контекст сборки зависимости, результаты сборки, логи и секреты: сборка передаёт меньше данных, лучше кешируется и не копирует .env в образ.

Через пробел или запятую, например docs/ **/*.tmp

Сохраните как .dockerignore рядом с Dockerfile, в корне контекста сборки. Проверьте, что не исключено ничего, что копирует Dockerfile.

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. Оставьте отмеченными «Файлы Docker и Git» и «Секреты»: они полезны почти в любом проекте.
  2. Отметьте свой язык и при необходимости редакторы и системные файлы.
  3. Добавьте свои шаблоны, например папку с тестовыми данными.
  4. Сохраните результат как .dockerignore в корне контекста сборки, обычно рядом с Dockerfile.

Как это работает

Выбранные списки объединяются в постоянном порядке: Docker и Git, секреты, языки, редакторы, системные файлы и в конце ваши шаблоны. Шаблон, который уже встречался в предыдущей группе, не повторяется, а опустевшая из-за этого группа пропускается.

Docker сравнивает каждую строку с путями относительно корня контекста. * совпадает в пределах одной папки, ** — с любым числом папок, а ! возвращает ранее исключённые файлы.

Пример

Выбор по умолчанию (Docker и Git, секреты, Node.js, системные файлы) начинается так:

# Docker and Git
.git
.gitignore
.dockerignore
Dockerfile*
docker-compose*.yml
compose*.yaml
**/*.log

# Secrets
.env
.env.*
!.env.example
**/*.pem
**/*.key

Дальше идут **/node_modules, логи npm и pnpm, coverage, dist, **/.DS_Store и **/Thumbs.db. Заголовки групп в файле — комментарии на английском, на работу Docker они не влияют.

Советы

  • Исключать node_modules нужно не только ради скорости: зависимости, установленные на вашем компьютере, могут быть собраны под другую систему. Ставьте их внутри образа.
  • Если Dockerfile копирует готовый файл, например target/app.jar или dist/, снимите отметку с этой группы или добавьте исключение через !.
  • После крупных изменений выполните docker build --no-cache . и убедитесь, что образ собирается без исключённых файлов.

Частые вопросы

Зачем нужен .dockerignore?

При docker build указанная папка (контекст сборки) отправляется сборщику. Файлы, подходящие под .dockerignore, в контекст не попадают: COPY и ADD не могут их скопировать, а передаётся меньше данных.

Почему некоторые шаблоны начинаются с **/?

В .dockerignore шаблон сравнивается от корня контекста: node_modules исключает только папку верхнего уровня. **/node_modules находит папку на любой глубине — это важно в монорепозиториях.

Как оставить один файл, который исключает шаблон?

Добавьте после шаблона строку с !, например .env.* и следом !.env.example. Решает последняя подходящая строка, поэтому исключение ставится после правила, которое оно отменяет.

Можно ли исключить сам Dockerfile?

Да. Сборщик всё равно получит Dockerfile и .dockerignore — они ему нужны, — но COPY . . не положит их в образ.

Это то же самое, что .gitignore?

Идея та же, правила разные: в .gitignore шаблон без косой черты действует на любой глубине, а в .dockerignore шаблоны отсчитываются от корня контекста. Поэтому здесь там, где папка может встретиться где угодно, стоит **/.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 4 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.