COPY ve ADD
- Docker & Kubernetes kursu
- Başlangıç
- Ders 22/82
- 4 dk
COPY ile dosyaları image'a kopyalamayı öğrenirsin.
COPY ve ADD
COPY kaynak hedef, build context'teki (genellikle proje klasörü) dosyaları image'a kopyalar. Hedef / ile bitiyorsa dizindir; WORKDIR ayarlıysa göreli yol ona göre çözülür:
WORKDIR /app
COPY requirements.txt . # /app/requirements.txt
COPY src/ ./src/ # klasörü kopyala
COPY --chown=node:node . . # sahipliği ayarlaNeden önce bağımlılık dosyası?
Bağımlılık listesini kaynak koddan önce ayrı kopyalamak önbelleği iyi kullanır: kod değiştiğinde yalnızca son katmanlar yeniden oluşturulur, uzun süren paket kurulumu önbellekten gelir:
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt # yalnızca requirements değişince çalışır
COPY . . # kod değişince yalnızca bu katmanUygulama Önbellek dostu kopyalama
python:3.12-slim tabanlı, WORKDIR /app olan bir Dockerfile yaz: önce requirements.txt'yi kopyala, pip install --no-cache-dir -r requirements.txt çalıştır, sonra projenin tamamını kopyala.
Başlangıç kodu
# buraya yazÖrnek çözüm
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .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 ADD'in COPY'den farklı olarak yaptığı nedir?
- Yalnızca klasör kopyalar
- Yerel tar arşivlerini açar ve URL'den indirebilir Doğru cevap
- Dosyaları siler
- Daha hızlı kopyalar
Açıklama: Bu "sihirli" davranışlar sürprize yol açtığı için COPY tercih edilir.
2 Kopyalanan dosyaların sahibini ayarla.
COPY ____=node:node . .
COPY --chown=node:node . .
Açıklama: --chown kullanıcı:grup verir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
COPY |
Context'ten kopyalar |
ADD |
tar açar, URL indirir |
COPY . . |
Tüm projeyi kopyalar |
önce requirements.txt |
Önbellek dostu sıra |