CodeBlanks Logo Icon CodeBlanks

Dockerfile

  • Go kursu
  • İleri seviye
  • Ders 47/68
  • 4 dk

Go uygulaması için Dockerfile yazmayı öğrenirsin.

Dockerfile

Dockerfile, bir imajın nasıl kurulacağını adım adım anlatan metin dosyasıdır. En basit Go Dockerfile'ı:

FROM golang:1.23
WORKDIR /app
COPY . .
RUN go build -o server .
CMD ["./server"]

FROM taban imajı, WORKDIR çalışma klasörünü, COPY dosyaları, RUN derleme komutunu, CMD konteyner başlayınca çalışacak komutu belirler. docker build -t app . ile imaj oluşturulur.

.dockerignore

COPY . . klasördeki her şeyi gönderir. .dockerignore dosyası gereksiz ya da gizli dosyaları dışarıda bırakır, derlemeyi hızlandırır ve önbelleği korur:

.git
*.env
bin/
node_modules/

CMD yerine ENTRYPOINT kullanırsan konteynere verilen argümanlar programına eklenir.

Uygulama Konteynere hazır sunucu

Konteynerde çalışacak sunucu tüm arayüzleri dinlemelidir. addr(port string) string fonksiyonu yaz; ":" + port döndürsün. addr("8080") sonucunu yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

func addr(port string) string {
    return ":" + port
}

func main() {
    fmt.Println(addr("8080"))
}

Beklenen çıktı

:8080

Soru ve cevaplar

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

1 Bu tek aşamalı imajın en büyük sorunu nedir?

  • Go derleyemez
  • Port açamaz
  • Tüm Go araç zinciri imajda kalır, imaj yüzlerce MB olur Doğru cevap
  • Çalışmaz

Açıklama: golang tabanı derleyici ve kütüphaneleri içerir (~800 MB); çalışmak için yalnızca ikili gerekir. Çok aşamalı derleme bunu çözer.

2 Taban imaj

Soru
____ golang:1.23
WORKDIR /app
Cevap
FROM golang:1.23
WORKDIR /app

Açıklama: FROM her Dockerfile'ın ilk talimatıdır ve taban imajı seçer.

3 Talimat ve görevi

Kavram Anlamı
FROM Taban imaj
COPY Dosya kopyalar
RUN Derleme anında komut
CMD Başlangıç komutu

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