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_modulesdin.dockerignore:COPY . .copiază binarele native compilate pentru macOS/Windows peste cele din containerul Linux, stricând aplicația. - Lipsa lui
.envdin.dockerignoreîmpreună cuCOPY . .: toate parolele locale ajung împachetate în imaginea publicată în registry. - Scrierea unei excepții
!sub/fisiercând părintelesub/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).