Jadual Kandungan
tetapan Direktori kerja
Pasang rangka kerja Gin
Tambahkan semua Fail ke direktori kerja
Arahan Jalankan
Rumah pembangunan bahagian belakang Golang Menggunakan rangka kerja Gin untuk melaksanakan fungsi penggunaan dan pengurusan kontena

Menggunakan rangka kerja Gin untuk melaksanakan fungsi penggunaan dan pengurusan kontena

Jun 22, 2023 pm 06:58 PM
Kontena mengerahkan ginframework

Dalam era pengkomputeran awan hari ini, kontena telah menjadi kaedah penggunaan dan pengurusan aplikasi yang sangat popular. Rangka kerja Gin ialah rangka kerja web ringan bagi bahasa GO Ia mempunyai ciri prestasi tinggi, penggunaan memori yang rendah, dan penyelenggaraan yang mudah, ia telah menjadi salah satu rangka kerja pilihan untuk pembangunan web menggunakan bahasa GO. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Gin untuk melaksanakan fungsi penggunaan dan pengurusan dalam kontena Mari kita belajar tentangnya bersama-sama.

1. Pengenalan kepada Docker

Pada masa ini, Docker ialah teknologi kontena paling popular, yang boleh membungkus aplikasi dan kebergantungan mereka ke dalam bekas supaya ia boleh dijalankan dengan mudah di mana-mana sahaja. Docker ialah sumber terbuka dan telah menjadi penyelesaian kontena standard de facto dalam industri.

2. Contoh pembungkusan Docker bagi rangka kerja Gin

Berikut ialah contoh mudah menggunakan Docker untuk membungkus rangka kerja Gin:

  1. Buat dan masukkan direktori projek :

mkdir docker-gin && cd docker-gin

  1. Cipta Fail Docker:

DARI golang:1.13

tetapan Direktori kerja

WORKDIR /go/src/app

Pasang rangka kerja Gin

RUN go get github.com/gin-gonic/gin

Tambahkan semua Fail ke direktori kerja

TAMBAH ./go/src/app

Arahan Jalankan

CMD ["go", "run", "main.go"]

  1. Buat fail main.go:

utama pakej

import "github.com/gin-gonic/gin"

func main() {
r := gin.Default()
r.GET("/", func (c *gin.Context) {

c.JSON(200, gin.H{
  "message": "Hello World",
})
Salin selepas log masuk

})
r .Run (":8080")
}

  1. Bina imej dan jalankan bekas:

docker build -t docker-gin .
docker run -p 8080 :8080 docker-gin

Kini anda boleh mengakses aplikasi kami melalui http://localhost:8080.

Tetapi selepas itu, kami selanjutnya menulis beberapa logik untuk mencapai tujuan penempatan dan pengurusan kami.

3. Penetapan dan pengurusan kontena

Berdasarkan contoh di atas, kami menambah dua API berikut untuk melaksanakan fungsi penggunaan dan pengurusan kontena:

  1. POST / deployment : Laksanakan fungsi penggunaan kontena

dengan memuat naik fail zip, menyahmampat dan membina imej baharu, dan akhirnya menggunakan bekas baharu melalui penjadualan Kubernetes.

Berikut ialah pelaksanaan yang dipermudahkan:

func handleDeploy(c *gin.Context) {
fail, pengepala, err := c.Request.FormFile("file")
if err != nil {

c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
Salin selepas log masuk

}
tangguh fail.Close()

// Simpan fail yang dimuat naik ke local
nama fail := "deploy/" + pengepala .Nama fail
keluar, err := os.Create(filename)
if err != nil {

c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
tangguh keluar.Close()
_, err = io .Copy(out, file)
if err != nil {

c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

// Nyahmampat fail yang dimuat naik
zipReader, err := zip.OpenReader(nama fail )
if err != nil {

c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
tangguhkan zipReader.Close()
untuk _, zipFail := julat zipReader.Fail {

srcObj, err := zipFile.Open()
if err != nil {
  c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
  return
}
defer srcObj.Close()

dstPath := "deploy/" + zipFile.Name
if !strings.HasPrefix(dstPath, "deploy/") {
  c.JSON(http.StatusBadRequest, gin.H{"error": "invalid file"})
  return
}
if zipFile.FileInfo().IsDir() {
  os.MkdirAll(dstPath, zipFile.Mode())
} else {
  dstObj, err := os.Create(dstPath)
  if err != nil {
    c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
    return
  }
  defer dstObj.Close()

  _, err = io.Copy(dstObj, srcObj)
  if err != nil {
    c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
    return
  }
}
Salin selepas log masuk

}

// Bina imej baharu dan panggil kerahan Kubernetes
cmd := exec.Command("bash", "-c", "docker build -t docker-gin-"+strconv.FormatInt(time .Now ().Unix(), 10)+" . && kubectl apply -f deploy.yml")
cmd.Dir = "./deploy"
out, err = cmd.CombinedOutput()
if err != nil {

c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
c.JSON(http.StatusOK, gin.H{"message": string(out)})
}

  1. PADAM /berhenti: Tutup bekas semasa

Berikut ialah pelaksanaan yang dipermudahkan:

func handleStop(c *gin.Context) {
// Dapatkan ID bekas semasa
nama hos, err := os.Hostname()
if err != nil {

c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
cmd := exec.Command("bash", "-c ", "kubectl get pod -o jsonpath='{.items[0].metadata.name}'")
cmdOutput, err := cmd.Output()
if err != nil {

c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
podName := strings.TrimSpace(string(cmdOutput))

// Tutup bekas semasa
cmd = exec.Command("bash", "-c", "kubectl delete pod " +podName)
cmdOutput, err = cmd.CombinedOutput()
if err != nil {

c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
c.JSON(http.StatusOK, gin. H{"message" : string(cmdOutput)})
}

Pelaksanaan kedua-dua API di atas adalah berdasarkan Kubernetes untuk pengurusan kontena Penggunaan Kubernetes tidak akan diperkenalkan secara terperinci di sini.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan Docker untuk merangkum rangka kerja Gin dan melaksanakan fungsi penggunaan dan pengurusan dalam kontena. Dalam amalan, kita boleh melaksanakan pelaksanaan yang lebih terperinci berdasarkan keperluan sebenar. Berikut adalah contoh mudah. Ringkasnya, menggunakan teknologi kontena untuk penggunaan dan pengurusan aplikasi boleh meningkatkan kecekapan pembangunan, mengelakkan masalah konfigurasi persekitaran, dan mengurangkan kesukaran operasi dan penyelenggaraan. Ia adalah pendekatan yang sangat disyorkan.

Atas ialah kandungan terperinci Menggunakan rangka kerja Gin untuk melaksanakan fungsi penggunaan dan pengurusan kontena. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menggunakan antara muka web yang boleh dipercayai pada pelayan Linux? Bagaimana untuk menggunakan antara muka web yang boleh dipercayai pada pelayan Linux? Sep 09, 2023 pm 03:27 PM

Bagaimana untuk menggunakan antara muka web yang boleh dipercayai pada pelayan Linux? Pengenalan: Dalam era ledakan maklumat hari ini, aplikasi Web telah menjadi salah satu cara utama untuk orang ramai mendapatkan maklumat dan berkomunikasi. Untuk memastikan privasi pengguna dan kebolehpercayaan maklumat, kami perlu menggunakan antara muka Web yang boleh dipercayai pada pelayan Linux. Artikel ini akan memperkenalkan cara untuk menggunakan antara muka web dalam persekitaran Linux dan menyediakan contoh kod yang berkaitan. 1. Pasang dan konfigurasikan pelayan Linux Mula-mula, kita perlu menyediakan Li

Perkongsian pengalaman pembangunan C#: perkhidmatan mikro dan amalan kontena Perkongsian pengalaman pembangunan C#: perkhidmatan mikro dan amalan kontena Nov 22, 2023 am 08:44 AM

Perkongsian Pengalaman Pembangunan C#: Perkhidmatan Mikro dan Amalan Pengkontenaan Dengan peningkatan pengkomputeran awan dan seni bina teragih, perkhidmatan mikro dan kontena telah menjadi dua topik hangat dalam pembangunan perisian moden. Seni bina perkhidmatan mikro boleh membantu pembangun membahagikan fungsi sistem dengan lebih baik dan meningkatkan kebolehskalaan dan kebolehselenggaraan manakala teknologi kontena boleh mencapai penggunaan pantas dan pengembangan anjal; Artikel ini akan ditujukan kepada pembangun C# dan berkongsi beberapa pengalaman dan teknik dalam amalan perkhidmatan mikro dan kontena. 1. Gambaran Keseluruhan Seni Bina Perkhidmatan Mikro Seni bina perkhidmatan mikro ialah kaedah yang membahagikan aplikasi kepada satu siri jabatan yang kecil dan bebas.

Gabungan sempurna Pengurus Proksi Nginx dan Docker: membina aplikasi kontena dengan cepat Gabungan sempurna Pengurus Proksi Nginx dan Docker: membina aplikasi kontena dengan cepat Sep 26, 2023 am 10:01 AM

Gabungan sempurna NginxProxyManager dan Docker: membina aplikasi kontena dengan cepat Dengan perkembangan pesat teknologi pengkomputeran awan dan kontena, semakin ramai pembangun dan perusahaan menggunakan aplikasi ke dalam bekas. Sebagai salah satu platform kontena paling popular pada masa ini, Docker menyediakan kemudahan untuk penempatan, pengurusan dan pengembangan aplikasi. NginxProxyManager, sebagai alat proksi terbalik berdasarkan Nginx, boleh membantu kami melaksanakan aplikasi melalui konfigurasi mudah.

Bagaimana untuk menyelesaikan masalah tidak dapat diakses selepas Tomcat menggunakan pakej perang Bagaimana untuk menyelesaikan masalah tidak dapat diakses selepas Tomcat menggunakan pakej perang Jan 13, 2024 pm 12:07 PM

Bagaimana untuk menyelesaikan masalah bahawa Tomcat tidak boleh berjaya mengakses pakej perang selepas menggunakan ia memerlukan contoh kod khusus Sebagai pelayan Web Java yang digunakan secara meluas, Tomcat membenarkan pemaju untuk membungkus aplikasi Web mereka sendiri yang dibangunkan ke dalam fail perang untuk penggunaan. Walau bagaimanapun, kadangkala kita mungkin menghadapi masalah tidak berjaya mengakses pakej perang selepas menggunakannya. Ini mungkin disebabkan oleh konfigurasi yang salah atau sebab lain. Dalam artikel ini, kami akan menyediakan beberapa contoh kod konkrit yang menangani dilema ini. 1. Semak perkhidmatan Tomcat

Yolov10: Penjelasan terperinci, penggunaan dan aplikasi semuanya di satu tempat! Yolov10: Penjelasan terperinci, penggunaan dan aplikasi semuanya di satu tempat! Jun 07, 2024 pm 12:05 PM

1. Pengenalan Sejak beberapa tahun kebelakangan ini, YOLO telah menjadi paradigma dominan dalam bidang pengesanan objek masa nyata kerana keseimbangannya yang berkesan antara kos pengiraan dan prestasi pengesanan. Penyelidik telah meneroka reka bentuk seni bina YOLO, matlamat pengoptimuman, strategi pengembangan data, dsb., dan telah mencapai kemajuan yang ketara. Pada masa yang sama, bergantung pada penindasan bukan maksimum (NMS) untuk pemprosesan pasca menghalang penggunaan YOLO dari hujung ke hujung dan memberi kesan buruk kepada kependaman inferens. Dalam YOLO, reka bentuk pelbagai komponen tidak mempunyai pemeriksaan yang komprehensif dan teliti, mengakibatkan lebihan pengiraan yang ketara dan mengehadkan keupayaan model. Ia menawarkan kecekapan suboptimum, dan potensi yang agak besar untuk peningkatan prestasi. Dalam kerja ini, matlamatnya adalah untuk meningkatkan lagi sempadan kecekapan prestasi YOLO daripada kedua-dua pasca pemprosesan dan seni bina model. sampai habis

Panduan Penggunaan Gunicorn untuk Aplikasi Flask Panduan Penggunaan Gunicorn untuk Aplikasi Flask Jan 17, 2024 am 08:13 AM

Bagaimana untuk menggunakan aplikasi Flask menggunakan Gunicorn? Flask ialah rangka kerja Web Python ringan yang digunakan secara meluas untuk membangunkan pelbagai jenis aplikasi Web. Gunicorn (GreenUnicorn) ialah pelayan HTTP berasaskan Python yang digunakan untuk menjalankan aplikasi WSGI (WebServerGatewayInterface). Artikel ini akan memperkenalkan cara menggunakan Gunicorn untuk menggunakan aplikasi Flask, dengan

Bagaimana untuk mengoptimumkan prestasi fungsi Java melalui kontena? Bagaimana untuk mengoptimumkan prestasi fungsi Java melalui kontena? Apr 29, 2024 pm 03:09 PM

Containerization meningkatkan prestasi fungsi Java dengan cara berikut: Pengasingan sumber - memastikan persekitaran pengkomputeran terpencil dan mengelakkan perbalahan sumber. Ringan - mengambil kurang sumber sistem dan meningkatkan prestasi masa jalan. Permulaan pantas - mengurangkan kelewatan pelaksanaan fungsi. Ketekalan - Asingkan aplikasi dan infrastruktur untuk memastikan tingkah laku yang konsisten merentas persekitaran.

Amalan terbaik dan penyelesaian masalah biasa untuk menggunakan projek web pada Tomcat Amalan terbaik dan penyelesaian masalah biasa untuk menggunakan projek web pada Tomcat Dec 29, 2023 am 08:21 AM

Amalan terbaik untuk menggunakan projek Web dengan Tomcat dan penyelesaian kepada masalah biasa Pengenalan: Tomcat, sebagai pelayan aplikasi Java yang ringan, telah digunakan secara meluas dalam pembangunan aplikasi Web. Artikel ini akan memperkenalkan amalan terbaik dan kaedah penyelesaian masalah biasa untuk penggunaan Tomcat projek web dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan dengan lebih baik. 1. Perancangan struktur direktori projek Sebelum menggunakan projek Web, kita perlu merancang struktur direktori projek. Secara umumnya, kita boleh menyusunnya dengan cara berikut

See all articles