Build arg ve label
- Go kursu
- İleri seviye
- Ders 51/68
- 4 dk
ARG ve LABEL ile imajı özelleştirmeyi öğrenirsin.
Build arg ve label
ARG derleme anında dışarıdan değer alır; LABEL imaja üst veri ekler:
ARG VERSION=dev
RUN go build -ldflags "-X main.version=${VERSION}" -o /out/app .
LABEL org.opencontainers.image.version=$VERSION \
org.opencontainers.image.source="https://github.com/ornek/app"Derleme: docker build --build-arg VERSION=1.4.0 -t app:1.4.0 .
Gizli bilgileri ARG ile verme
ARG değerleri docker history çıktısında görünebilir; parola ve token için uygun değildir. BuildKit'in gizli bağlama özelliği kullanılır:
RUN --mount=type=secret,id=netrc,target=/root/.netrc go mod downloadÇalışma anındaki gizli bilgiler ise imaja değil, konteynere ortam değişkeni ya da dosya olarak verilir.
Uygulama Sürüm ve commit
ldflags ile doldurulacak var version = "dev" ve var commit = "yok" tanımla. info() string fonksiyonu version + " (" + commit + ")" döndürsün; sonucu yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
var (
version = "dev"
commit = "yok"
)
func info() string {
return version + " (" + commit + ")"
}
func main() {
fmt.Println(info())
}Beklenen çıktı
dev (yok)
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?
- ENV yalnızca derleme anında vardır
- ARG gizli değer saklar
- ARG yalnızca derleme anında, ENV çalışan konteynerde de vardır Doğru cevap
- Fark yoktur
Açıklama: ARG değerleri imaja çalışma ortamı olarak geçmez; programın çalışırken görmesi gereken ayarlar ENV ile verilir.
2 Derleme değişkeni
____ VERSION=dev
RUN go build -ldflags "-X main.version=${VERSION}" .
ARG VERSION=dev
RUN go build -ldflags "-X main.version=${VERSION}" .
Açıklama: ARG, docker build --build-arg ile değiştirilebilen derleme anı değişkenidir.
3 Talimat ve zamanı
| Kavram | Anlamı |
|---|---|
ARG |
Derleme anı |
ENV |
Çalışma anı |
LABEL |
İmaj üst verisi |
--mount=type=secret |
Gizli derleme verisi |