CodeBlanks Logo Icon CodeBlanks

Özet - Dockerfile

FROM, RUN, COPY ve CMD'yi birleştirerek bir Dockerfile yazarsın.

Özet: Dockerfile

Bu grupta:

  • Dockerfile, image'ı yukarıdan aşağıya talimatlarla tarif eder; ilk talimat FROM'dur.
  • Temel image sürümle sabitlenir; -slim/-alpine boyutu küçültür.
  • Her RUN bir katmandır; kurulum ve temizlik aynı RUN'da yapılır.
  • COPY context'ten kopyalar; bağımlılık dosyası koddan önce kopyalanır.
  • CMD varsayılan komut, ENTRYPOINT sabit programdır; exec biçimi tercih edilir.
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]

Uygulama Tam bir Python Dockerfile'ı

python:3.12-slim tabanlı, /app çalışma dizinli bir Dockerfile yaz: requirements.txt'yi kopyala ve pip install --no-cache-dir -r requirements.txt çalıştır; tüm projeyi kopyala; 8000 portunu belgele; CMD exec biçiminde python app.py olsun.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]

Beklenen çıktı

[+] Building 4.2s (8/8) FINISHED
 => naming to docker.io/library/api:latest done

Soru ve cevaplar

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

1 Shell biçimindeki CMD'nin sakıncası nedir?

  • Daha büyük image üretir
  • Ortam değişkeni kullanamaz
  • Build'i yavaşlatır
  • Uygulama SIGTERM'i almayabilir ve düzgün kapanamaz Doğru cevap

Açıklama: Shell biçiminde PID 1 /bin/sh olur.

2 Çalışma dizinini ayarla.

Soru
____ /app
Cevap
WORKDIR /app

Açıklama: WORKDIR dizini yoksa oluşturur ve sonraki talimatlar için ayarlar.

3 Eşleştir.

Kavram Anlamı
FROM İlk talimat
RUN Build katmanı
EXPOSE Port belgesi
CMD Varsayılan komut

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