CodeBlanks Logo Icon CodeBlanks

.dockerignore

.dockerignore ile build context'i filtrelemeyi öğrenirsin.

.dockerignore

.dockerignore, context'ten dışlanacak dosyaları .gitignore benzeri desenlerle listeler. Context küçülür, build hızlanır ve yanlışlıkla gizli dosyaların (.env) image'a girmesi önlenir:

# .dockerignore
.git
node_modules
*.log
.env
Dockerfile
!README.md       # ! istisna: bunu yine de dahil et

node_modules neden dışlanır?

Yerel node_modules hem çok büyüktür hem de ana makinenin işletim sistemine göre derlenmiş olabilir (ör. macOS'ta derlenen yerel modüller Linux container'da çalışmaz). Doğrusu, bağımlılıkları image içinde npm ci ile kurmaktır:

COPY package*.json ./
RUN npm ci --omit=dev
COPY . .          # .dockerignore sayesinde yerel node_modules gelmez

Uygulama Bir .dockerignore yaz

Bir Node.js projesi için .dockerignore içeriğini yaz: .git, node_modules, .env ve tüm .log dosyalarını dışla.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
.git
node_modules
.env
*.log

Beklenen çıktı

[+] Building 1.1s
 => [internal] load build context
 => => transferring context: 18.42kB

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 .env dosyasını .dockerignore'a eklemenin asıl nedeni nedir?

  • Build'i hızlandırmak
  • Ortam değişkenlerini kapatmak
  • Dosyayı silmek
  • Parolaların image katmanlarına girmesini önlemek Doğru cevap

Açıklama: Image'ı indiren herkes katmanlardaki dosyaları okuyabilir.

2 Tüm log dosyalarını dışla.

Soru
____.log
Cevap
*.log

Açıklama: * herhangi bir karakter dizisiyle eşleşir.

3 Desenleri eşleştir.

Kavram Anlamı
.git Sürüm geçmişi
*.log Tüm log dosyaları
!README.md İstisna
.env Gizli değerler

Başlangıç bölümündeki tüm dersler