Go uygulamalarınızı verimli bir şekilde paketlemek ve dağıtmak için Docker'ı nasıl kullanacağınızı öğrenin, böylece onları taşınabilir ve yönetimi kolay hale getirin.

Docker, sadeliği ve kullanım kolaylığı nedeniyle en popüler konteynerleştirme teknolojisidir. Docker, yazılım geliştirme ve dağıtımındaki taşınabilirlik sorunlarının stresini azaltır. Docker kapsayıcılarınızı çoğu bulut hizmeti sağlayıcısına dağıtabilirsiniz.

Go uygulamalarınızı Docker ile konteyner haline getirmek, farklı ortamlarda tutarlı ve güvenilir dağıtım sağlamanıza yardımcı olabilir. Go uygulamalarınızı geliştirme, hazırlama ve üretim gibi farklı ortamlara dağıtabilirsiniz. Docker konteynerleri hafiftir ve geleneksel sanal makinelerden daha az yer kaplar. Bu, barındırma maliyetlerinden tasarruf etmenizi sağlayabilir ve dağıtımlarınızı daha hızlı hale getirebilir.

Go'da Basit Bir Web Sunucusu Kurma

Go standart kitaplığı, basit bir web sunucusu kurmak için ihtiyaç duyacağınız paketleri içerir.

İlk olarak, içe aktarın http

instagram viewer
, kayıt, Ve json paketler. kullanacaksın Go'nun http paketi sunucuyu kurmak ve ELDE ETMEK uç nokta talep edin. bu kayıt Olası hataları konsolunuza kaydetmek için paket. bu bir yapıyı JSON'a kodlamak için json paketi API uç noktası için.

içe aktarmak (
"kodlama/json"
"kayıt"
"ağ/http"
)

Bir yapı örneğini, isteğin geçerliliğine bağlı olarak istemciye bir yanıt olarak JSON olarak şu şekilde kodlayabilirsiniz:

tip İleti yapı {
Cevap sicim`json:"yanıt"`
Tanım sicim`json:"açıklama"`
}

İşleyici işlevi, uç noktaya yapılan istek bir ELDE ETMEK rica etmek.

// dockerTestEndpoint, Docker bağlantısını test etmek için API uç noktasını yönetir
işlevdockerTestEndpoint(yazar http. ResponseWriter, istek *http. Rica etmek) {

// Yanıt başlığını JSON içeriğini gösterecek şekilde ayarlayın
yazar. Başlık().Set("İçerik türü,""uygulama/json")

// İstek yöntemi GET ise
eğer rica etmek. Yöntem == "ELDE ETMEK" {

// Yanıt durum kodunu 200 olarak ayarla tamam
yazar. Yazı Başlığı (http. DurumTamam)

// Başarılı bir yanıt için bir mesaj yapısı oluşturun
mesaj := Mesaj{
Cevap: "Başarılı",
Tanım: "API bitiş noktasına başarıyla ulaştınız" +
"Docker Container'ınızdan",
}
// Mesajı JSON olarak kodlayın ve yanıt olarak gönderin
hata := json. NewEncoder (yazar).Encode(&mesaj)
eğer hata!= sıfır {
geri dönmek
}
} başka {

// İstek yöntemi GET değilse
// Yanıt durum kodunu 400 Hatalı İstek olarak ayarla
yazar. Yazı Başlığı (http. DurumKötü İstek)

// Kötü bir istek yanıtı için bir mesaj yapısı oluştur
mesaj := Mesaj{
Cevap: "Geçersiz istek",
Tanım: "API uç noktasına başarıyla ulaştınız" +
"Docker Container, Ama kötü bir istekte bulundunuz",
}

// Mesajı JSON olarak kodlayın ve yanıt olarak gönderin
hata := json. NewEncoder (yazar).Encode(&mesaj)
eğer hata!= sıfır {
geri dönmek
}
}
}

İşleyici işlevini ana işlevde rota ile şu şekilde ayarlarsınız: /api/docker/go. bu dockerTestEndpoint işleyici işlevi, işleyiciye yapılan isteğin bir GET isteği olduğunu doğrular. Bu bir GET isteğiyse, örneklenmiş bir isteği kodlar. İleti isteğin durumuna göre müşteriye struct örneği.

İşleyici işlevini bir rotaya nasıl bağlayabileceğiniz ve sunucuyu bağlantı noktasında çalışacak şekilde nasıl kurabileceğiniz aşağıda açıklanmıştır 8080:

işlevana() {
// 'dockerTestEndpoint' işleyici işlevini kaydedin
// "/api/docker/go" URL isteklerini işlemek için.
http. HandFunc("/api/docker/git", dockerTestEndpoint)

// HTTP sunucusunu başlatın ve 8080 numaralı bağlantı noktasından gelen istekleri dinleyin.
hata := http. dinleve sun(":8080", sıfır)
eğer hata!= sıfır {
kayıt. Ölümcül("Sunucuda bir hata var:", hata)
}
}

bu ana işlev, bağlantı noktasını dinleyen sunucunun giriş noktasıdır 8080. bu KulpFunc yöntem, yolları işleyici işlevine bağlar. bu Dinle ve Sun yöntem, sunucuyu belirtilen yerel ana bilgisayar bağlantı noktasında başlatır 8080.

Docker ile Go Uygulamalarınızı Konteyner Haline Getirmeye Başlarken

Docker'ı yükleyip ayarladıktan sonra, Go uygulamanız için bir Docker görüntüsü oluşturup derlemek üzere Dockerfile adlı bir Docker dosyasına ihtiyacınız olacak. Temel görüntü için komutlar ve dosyaları kopyalamak, çalışma dizini eklemek ve uygulamayı Dockerfile içinde çalıştırmak için komutlar belirleyeceksiniz.

Bir Dockerfile oluşturmak için bu komutu çalışma alanınızın terminalinde çalıştırın.

Dockerfile'a dokunun

Docker resminizi Docker dosyasında oluşturmaya yönelik komutları belirteceksiniz.

Docker görüntünüzden ayırmak istediğiniz herhangi bir dosya varsa, .dockerignore dosya. bu .dockerignore dosyalar tam olarak şu şekilde çalışır: .gitignore Dosyalar.

.dockerignore'a dokunun

Ardından, uygulamalarınızı kapsayıcı hale getirmek için Dockerfile dosyanızda derleme komutları belirteceksiniz.

Dockerfile'da Komut Tanımlama

Docker dosyaları, projenizin özelliklerine göre özelleştirilebilir. Uygulamayı oluşturmak için temel görüntüyü oluşturmaya yönelik komutları tanımlayacaksınız.

Yukarıdaki web sunucusunu oluşturan Dockerfile içeriğine bir örnek:

# Bir Golang temel görüntüsü kullanın
İTİBAREN golang: en son

# Kapsayıcı içindeki çalışma dizinini ayarlayın
İŞ YÖNÜ /app

# Yerel dizindeki tüm dosyaları kapsayıcıdaki çalışma dizinine kopyalar
KOPYALA. .

# Go modülü bağımlılıklarını indirin
KOŞMAK mod indirmeye git

# Go uygulamasını oluşturun
KOŞMAK build -o uygulamasına git

# Uygulama için giriş noktasını ayarlayın
GİRİŞ NOKTASI ["./uygulama"]

Dockerfile'ın kullandığı golang: en son çalışma dizini olarak ayarladıktan sonra uygulamayı oluşturmak için temel görüntü /app.

Dockerfile, dosyaları şu şekilde kopyalar: KOPYALA ile komut ve indirme bağımlılıkları KOŞMAK emretmek.

Dosya, bir oluşturma ve çalıştırma işlemini belirtir. KOŞMAK komutu, ardından komutu kapsayıcı ile başladığında çalıştırılacak şekilde ayarlar. CMD emretmek.

Dockerfile'ı dosyanızla aynı dizine kaydedin. git.mod Ve ana.git Dosyalar; daha sonra bu Docker dosyasından bir Docker görüntüsü oluşturmak için bu komutu çalıştırın:

docker build -t GolangTutorial .

Yukarıdaki komut, etiketiyle bir Docker görüntüsü oluşturacaktır. golang öğreticisi. Bu komutla bir konteyner çalıştırabilirsiniz:

docker run -p 8080:8080 golangtutorial

Komut, kaptan gelen 8080 numaralı bağlantı noktasını ana makinenin yerel ana bilgisayarındaki 8080 numaralı bağlantı noktasına eşler. Docker kapsayıcısında çalışan sunucuyu ana makineden talep edebilirsiniz.

İşte sonuç CURL isteğini sunucuya gönderme, bu sefer Docker'da çalışıyor:

Kapsayıcı Düzenleme için Docker Compose'u Kullanabilirsiniz

Docker Compose, Docker kapsayıcılarını düzenlemek (birçok kişiyle çalışmak) için kullanabileceğiniz bir araçtır. Docker Compose, tek bir YAML dosyasında çok kapsayıcılı bir uygulama tanımlamanıza olanak tanır. Tüm uygulamayı tek bir komutla çalıştırabilir ve yönetebilirsiniz.

Karmaşık kapsayıcılı uygulamaları dağıtmak ve yönetmek için Docker Compose'u kullanabilirsiniz. Docker Compose, otomatikleştirilmiş ve tutarlı dağıtımlarla yönetimi basitleştirir.