Pelajari cara menggunakan Docker untuk mengemas dan menerapkan aplikasi Go Anda secara efisien, menjadikannya portabel dan mudah dikelola.
Docker adalah teknologi containerisasi paling populer karena kesederhanaan dan kemudahan penggunaannya. Docker mengurangi tekanan masalah portabilitas dalam pengembangan dan distribusi perangkat lunak. Anda dapat menerapkan wadah buruh pelabuhan Anda ke sebagian besar penyedia layanan cloud.
Mengumpulkan aplikasi Go Anda dengan Docker dapat membantu Anda memastikan penerapan yang konsisten dan andal di berbagai lingkungan. Anda dapat menerapkan aplikasi Go ke berbagai lingkungan seperti pengembangan, pementasan, dan produksi. Kontainer Docker ringan dan memakan lebih sedikit ruang daripada mesin virtual tradisional. Ini dapat menghemat uang Anda untuk biaya hosting, dan juga dapat membuat penyebaran Anda lebih cepat.
Menyiapkan Server Web Sederhana di Go
Pustaka standar Go berisi paket-paket yang Anda perlukan untuk menyiapkan server web sederhana.
Pertama, impor file
http, catatan, Dan json paket. Anda akan menggunakan Paket http Go untuk mengatur server dan MENDAPATKAN meminta titik akhir. Itu catatan paket untuk mencatat kemungkinan kesalahan ke konsol Anda. Itu paket json untuk menyandikan struct ke JSON untuk titik akhir API.impor (
"pengkodean/json"
"catatan"
"net/http"
)
Anda dapat menyandikan instance struct sebagai JSON ke klien sebagai respons berdasarkan validitas permintaan sebagai berikut:
jenis Pesan struct {
Tanggapan rangkaian`json:"respons"`
Keterangan rangkaian`json:"deskripsi"`
}
Fungsi penangan akan mengembalikan pesan yang berhasil ke klien jika permintaan ke titik akhir adalah a MENDAPATKAN meminta.
// dockerTestEndpoint menangani titik akhir API untuk menguji konektivitas Docker
fungsidockerTestEndpoint(penulis http. ResponseWriter, minta *http. Meminta) {// Tetapkan tajuk respons untuk menunjukkan konten JSON
penulis. Header().Set("Jenis konten,""aplikasi/json")// Jika metode permintaan adalah GET
jika meminta. Metode == "MENDAPATKAN" {// Setel kode status respons ke 200 OK
penulis. WriteHeader (http. StatusOK)// Buat struktur pesan untuk respons yang berhasil
pesan := Pesan{
Tanggapan: "Sukses",
Keterangan: "Anda telah berhasil mencapai titik akhir API " +
"Dari Kontainer Docker Anda",
}
// Enkode pesan sebagai JSON dan kirimkan sebagai respons
salah := json. NewEncoder (penulis).Encode(&pesan)
jika salah!= nol {
kembali
}
} kalau tidak {// Jika metode permintaan bukan GET
// Setel kode status respons ke 400 Bad Request
penulis. WriteHeader (http. StatusBadRequest)// Buat struktur pesan untuk respons permintaan yang buruk
pesan := Pesan{
Tanggapan: "Permintaan yang buruk",
Keterangan: "Anda telah berhasil mencapai titik akhir API Dari " +
"Docker Container, Tapi Anda membuat permintaan yang buruk",
}
// Enkode pesan sebagai JSON dan kirimkan sebagai respons
salah := json. NewEncoder (penulis).Encode(&pesan)
jika salah!= nol {
kembali
}
}
}
Anda mengatur fungsi penangan di fungsi utama dengan rute sebagai /api/docker/go. Itu dockerTestEndpoint fungsi handler memvalidasi bahwa permintaan ke handler adalah permintaan GET. Jika itu permintaan GET, itu mengkodekan instantiated Pesan struct instance ke klien berdasarkan status permintaan.
Inilah cara Anda dapat memasang fungsi penangan pada rute dan menyiapkan server untuk berjalan di port 8080:
fungsiutama() {
// Daftarkan fungsi handler 'dockerTestEndpoint'
// untuk menangani permintaan URL "/api/docker/go".
http. HandleFunc("/api/buruh/pergi", dockerTestEndpoint)
// Mulai server HTTP dan dengarkan permintaan masuk di port 8080.
salah := http. MendengarkanDanMenyajikan(":8080", nol)
jika salah!= nol {
catatan. Fataln("Ada kesalahan dengan server:", salah)
}
}
Itu utama fungsi adalah titik masuk server, yang mendengarkan port 8080. Itu HandleFunc metode me-mount rute pada fungsi handler. Itu Dengarkan Dan Sajikan metode memulai server pada port host lokal yang ditentukan 8080.
Memulai Wadahisasi Aplikasi Go Anda Dengan Docker
Setelah menginstal dan menyiapkan Docker, Anda memerlukan file Docker bernama Dockerfile untuk membuat dan membuat image Docker untuk aplikasi Go Anda. Anda akan menentukan perintah untuk image dasar dan perintah untuk menyalin file, menambahkan direktori kerja, dan menjalankan aplikasi di Dockerfile.
Jalankan perintah ini di terminal ruang kerja Anda untuk membuat Dockerfile.
sentuh Dockerfile
Anda akan menentukan perintah untuk membuat gambar Docker Anda di Dockerfile.
Jika ada file yang ingin Anda pisahkan dari gambar Docker Anda, Anda dapat menggunakan a .dockerignore mengajukan. Itu .dockerignore file bekerja persis seperti .gitignore file.
sentuh .dockerignore
Selanjutnya, Anda akan menentukan perintah build di Dockerfile Anda untuk menampung aplikasi Anda.
Mendefinisikan Perintah di Dockerfile
Dockerfile dapat disesuaikan berdasarkan spesifikasi proyek Anda. Anda akan menentukan perintah untuk membangun citra dasar untuk membangun aplikasi.
Berikut contoh isi Dockerfile yang membangun web server di atas:
# Gunakan gambar dasar Golang
DARI golang: terbaru# Atur direktori kerja di dalam wadah
WORKDIR /app# Salin semua file di direktori lokal ke direktori kerja di wadah
MENYALIN. .# Unduh dependensi modul Go
BERLARI pergi unduh mod# Bangun aplikasi Go
BERLARI pergi membangun -o app
# Tetapkan titik masuk untuk aplikasi
TITIK MASUK ["./aplikasi"]
Dockerfile menggunakan golang: terbaru gambar dasar, untuk membangun aplikasi setelah menyetel direktori kerja /app.
Dockerfile menyalin file dengan MENYALIN perintah dan unduh dependensi dengan BERLARI memerintah.
File menentukan operasi build and run dengan BERLARI perintah, lalu setel perintah untuk dijalankan saat wadah dimulai dengan CMD memerintah.
Simpan Dockerfile di direktori yang sama dengan Anda go.mod Dan main.go file; kemudian jalankan perintah ini untuk membuat image Docker dari Dockerfile ini:
docker build -t GolangTutorial .
Perintah di atas akan membuat gambar Docker dengan tag golangtutorial. Anda dapat menjalankan wadah dengan perintah ini:
docker run -p 8080:8080 golangtutorial
Perintah memetakan port 8080 dari wadah ke port 8080 di localhost dari mesin host. Anda dapat meminta server berjalan di wadah Docker dari mesin host.
Berikut hasil dari mengirimkan permintaan CURL ke server, kali ini berjalan di Docker:
Anda Dapat Menggunakan Docker Compose untuk Orkestrasi Kontainer
Docker Compose adalah alat yang dapat Anda gunakan untuk mengatur (bekerja dengan banyak) wadah Docker. Docker Compose memungkinkan Anda menentukan aplikasi multi-kontainer dalam satu file YAML. Anda dapat menjalankan dan mengelola seluruh aplikasi dengan satu perintah.
Anda dapat menggunakan Docker Compose untuk menerapkan dan mengelola aplikasi dalam container yang kompleks. Docker Compose menyederhanakan manajemen dengan penerapan otomatis dan konsisten.