CodeBlanks Logo Icon CodeBlanks

ARG komutu

ARG ile build zamanı değişkenlerini öğrenirsin.

ARG komutu

ARG, yalnızca build sırasında geçerli bir değişken tanımlar; çalışan container'da yoktur. Değeri docker build --build-arg ile verilir, verilmezse varsayılan kullanılır:

ARG PYTHON_VERSION=3.12
FROM python:${PYTHON_VERSION}-slim
ARG UYGULAMA_SURUMU=dev
RUN echo "$UYGULAMA_SURUMU" > /surum.txt

$ docker build --build-arg PYTHON_VERSION=3.11 --build-arg UYGULAMA_SURUMU=1.4.0 -t api .

FROM öncesi ARG

FROM'dan önce tanımlanan ARG yalnızca FROM satırlarında kullanılabilir. FROM'dan sonra da kullanmak istersen değeri olmadan yeniden bildirilir:

ARG SURUM=3.12
FROM python:${SURUM}-slim
ARG SURUM                 # yeniden bildir: değer yukarıdan gelir
RUN echo "Python $SURUM"

ARG değerleri de docker history'de görünebilir; gizli değer için BuildKit'in --secret özelliği kullanılır.

Uygulama Sürümü dışarıdan seç

Bir Dockerfile yaz: FROM'dan önce ARG NODE_VERSION=20; temel image node:${NODE_VERSION}-alpine; FROM'dan sonra ARG SURUM=dev ve onu çalışma anına taşıyan ENV APP_SURUM=$SURUM.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
ARG NODE_VERSION=20
FROM node:${NODE_VERSION}-alpine
ARG SURUM=dev
ENV APP_SURUM=$SURUM

Beklenen çıktı

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

Soru ve cevaplar

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

1 ARG ile ENV arasındaki fark nedir?

  • ARG yalnızca container'da geçerlidir
  • ENV build'de kullanılamaz
  • ARG yalnızca build'de, ENV build'de ve çalışan container'da geçerlidir Doğru cevap
  • İkisi aynıdır

Açıklama: Bir ARG değerini çalışma anına taşımak için ENV AD=$AD yazılır.

2 Build argümanını ver.

Soru
docker build ____ SURUM=1.4.0 -t api .
Cevap
docker build --build-arg SURUM=1.4.0 -t api .

Açıklama: --build-arg AD=değer bir ARG'ı doldurur.

3 Eşleştir.

Kavram Anlamı
ARG Build değişkeni
--build-arg ARG değerini verir
FROM öncesi ARG Temel image seçimi
--secret Gizli build değeri

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