ARG komutu
- Docker & Kubernetes kursu
- Başlangıç
- Ders 57/82
- 4 dk
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
# buraya yazÖrnek çözüm
ARG NODE_VERSION=20
FROM node:${NODE_VERSION}-alpine
ARG SURUM=dev
ENV APP_SURUM=$SURUMBeklenen çı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.
docker build ____ SURUM=1.4.0 -t api .
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 |