CodeBlanks Logo Icon CodeBlanks

Build context

Build context'in ne olduğunu ve nasıl kullanıldığını öğrenirsin.

Build context

docker build başlarken context klasörünün tamamını daemon'a gönderir. Context'in dışındaki dosyalar (COPY ../gizli.txt . gibi) kopyalanamaz. Büyük bir context (ör. node_modules, veri dosyaları) build'i yavaşlatır:

$ docker build -t web .
[+] Building 12.4s
 => [internal] load build context
 => => transferring context: 845.21MB     # çok büyük!

Context'i seçmek

Context ile Dockerfile'ın yeri ayrı verilebilir. Bir monorepoda kök klasörü context yapıp alt klasördeki Dockerfile'ı kullanmak yaygındır:

# proje/
#   paylasilan/
#   servisler/api/Dockerfile
cd proje
docker build -f servisler/api/Dockerfile -t api .   # context: proje/

Context bir Git adresi de olabilir: docker build https://github.com/ali/api.git#main.

Uygulama Monorepo build'i

proje klasörünün içindesin. servisler/api/Dockerfile dosyasını kullanarak, context'i mevcut klasör olan ve image adı api:dev olan build komutunu yaz.

Başlangıç kodu

terminal
# buraya yaz

Beklenen çıktı

[+] Building 6.3s (10/10) FINISHED
 => naming to docker.io/library/api:dev done

Soru ve cevaplar

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

1 COPY ../config.yml . neden başarısız olur?

  • COPY tek dosya almaz
  • Dosya build context'inin dışında Doğru cevap
  • YAML desteklenmez
  • Nokta hatalı

Açıklama: Daemon yalnızca kendisine gönderilen context'i görür.

2 Context'i üst klasör yap.

Soru
docker build -f Dockerfile -t api ____
Cevap
docker build -f Dockerfile -t api ..

Açıklama: .. bir üst klasördür.

3 Eşleştir.

Kavram Anlamı
context Daemon'a gönderilen klasör
-f Dockerfile yeri
transferring context Gönderilen boyut
Git adresi Uzak context

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