.dockerignore în Docker

Dockerfile Docker 1.1+

Exclude fișiere și directoare din contextul trimis la docker build, accelerând construcția și protejând secretele.

Sintaxă comandă
# comentariu
tipar_exclus
!excepție_inclusă

Ce face .dockerignore

Când rulezi docker build ., primul lucru pe care îl face clientul Docker este să împacheteze directorul curent (contextul de build) și să îl trimită către daemon. Dacă în proiect ai .git, node_modules, vendor, .venv sau arhive mari, fiecare build trimite inutil sute de megabiți, iar un COPY . . le va băga direct în imagine.

Fișierul .dockerignore, pus în rădăcina contextului de build, folosește o sintaxă similară cu .gitignore și îi spune lui Docker ce căi să ignore complet. Pe lângă viteză și dimensiune, are un rol critic de securitate: împiedică includerea accidentală a fișierelor .env, cheilor SSH sau certificatelor locale în imagine.

Un efect secundar foarte util: modificarea unui fișier ignorat (de exemplu README.md sau istoria .git) nu mai invalidează cache-ul instrucțiunii COPY . ..

Opțiuni și argumente

Opțiune / Parametru Descriere
nume / dir/ Exclude fișierul sau directorul indicat.
* și ** * potrivește orice secvență într-un singur nivel de director; ** potrivește recursiv oricâte niveluri (de ex. **/*.log).
!cale Excepție: reinclude un fișier care ar fi fost exclus de o regulă anterioară.
Dockerfile.nume.dockerignore Cu BuildKit poți avea un fișier ignore specific unui anumit Dockerfile (util în monorepo-uri).

Exemple

Exemplul 1: Fișier .dockerignore recomandat pentru un proiect web (Node / Python / PHP)

Exclude metadatele Git, dependențele instalate pe gazdă, fișierele cu secrete și documentația.

# Controlul versiunilor și IDE
.git
.gitignore
.vscode
.idea

# Dependențe și artefacte locale (se instalează curat în container)
node_modules
vendor
.venv
__pycache__
dist
build
coverage

# Secrete și configurații locale — NU trebuie să ajungă în imagine!
.env
.env.*
!.env.example
*.pem
*.key

# Fișiere inutile la rulare
README.md
docs
docker-compose*.yml
compose*.yaml
Dockerfile*

Greșeli frecvente

  • Lipsa lui node_modules din .dockerignore: COPY . . copiază binarele native compilate pentru macOS/Windows peste cele din containerul Linux, stricând aplicația.
  • Lipsa lui .env din .dockerignore împreună cu COPY . .: toate parolele locale ajung împachetate în imaginea publicată în registry.
  • Scrierea unei excepții !sub/fisier când părintele sub/ este exclus fără ca excepția să vină după regula de excludere.

Comenzi înrudite

  • docker build: Construiește o imagine pe baza unui Dockerfile și a unui context de build.
  • Dockerfile: COPY și ADD: Copiază fișiere și directoare din contextul de build (sau din altă etapă) în imagine.
  • Dockerfile: ENV, ARG și EXPOSE: Definește variabile la build (ARG), variabile de mediu la rulare (ENV) și documentează porturile (EXPOSE).