Глиф Учебники

Файл .dockerignore

Справочник · Docker · 2 минуты чтения

.dockerignore — список файлов и папок, которые не отправляются в сборку образа. Он лежит в корне контекста сборки — обычно рядом с Dockerfile — и устроен похоже на .gitignore.

Пример

Текст
.git
.env
*.log
**/__pycache__
**/*.pyc
**/node_modules
.venv
Dockerfile
compose.yaml

Создайте файл с таким именем (с точкой в начале) в папке проекта — и при следующей docker build . перечисленное не попадёт ни в сборку, ни в образ.

Зачем он нужен

При docker build . вся папка проекта — контекст сборки — передаётся сборщику. COPY . . кладёт в образ всё, что в ней есть. Без .dockerignore туда попадают:

Ещё одна польза — кэш: если в контекст попадает файл, который постоянно меняется (например, лог), COPY . . каждый раз считается изменившимся, и всё после него пересобирается.

Правила шаблонов

Пример с ! — исключить все Markdown-файлы, кроме README:

Текст
*.md
!README.md

Порядок важен: для каждого файла действует последняя подходящая строка. Строка !README.md до *.md не сработала бы.

Частые ошибки

Свой файл для каждого Dockerfile

Если в проекте несколько Dockerfile, у каждого может быть свой список: рядом с build.Dockerfile кладут build.Dockerfile.dockerignore. Такой файл главнее общего .dockerignore в корне контекста.

.dockerignore защищает сборку, но не заменяет .gitignore: файл .env с паролями нужно исключать в обоих — чтобы он не попал ни в образ, ни в репозиторий.