CodeBlanks Logo Icon CodeBlanks

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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
____ VERSION=dev
RUN go build -ldflags "-X main.version=${VERSION}" .
Cevap
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

İleri seviye bölümündeki tüm dersler