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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
____ golang:1.23
WORKDIR /app
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 |