Cara Deploy Go Web App di Ubuntu
Dalam tutorial ini, kita akan membahas langkah-langkah untuk mendistribusikan aplikasi web yang dibuat dengan bahasa pemrograman Go di sistem operasi Ubuntu menggunakan Docker dan Nginx. Dengan mengikuti panduan ini, Anda akan dapat mengatur lingkungan yang optimal untuk aplikasi Go Anda dan mengaksesnya melalui domain yang telah Anda daftarkan.
Prasyarat
- Pengetahuan dasar tentang Docker dan arsitekturnya.
- Rekam DNS "A" dengan
your_domainyang mengarah ke alamat IP publik server Anda. - Nama domain yang telah terdaftar sepenuhnya.
- Docker Compose yang terpasang pada Ubuntu 22.04.
- Docker yang terpasang pada Ubuntu 22.04.
- Server Ubuntu 22.04 dengan hak akses root dan akun non-root.
Langkah Utama
Langkah 1 — Membuat Aplikasi Web Go Contoh
Di sini, kita akan membuat aplikasi web sederhana yang menggunakan router permintaan gorilla/mux.
Mulai dengan membuat direktori untuk aplikasi kita.
mkdir ~/go-docker
cd ~/go-docker
Selanjutnya, buat file bernama main.go dan buka dengan editor teks pilihan Anda:
nano main.go
Tambahkan kode berikut ke dalam main.go:
package main
import (
"fmt"
"net/http"
"github.com/gorilla/mux"
)
func main() {
r := mux.NewRouter()
r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "
Ini adalah beranda. Coba /hello dan /hello/Sammy\n
")
})
r.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "
Halo, dunia!
")
})
r.HandleFunc("/hello/{name}", func(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
name := vars["name"]
fmt.Fprintf(w, "
Halo, %s!
", name)
})
http.ListenAndServe(":8080", r)
}
Langkah 2 — Menyiapkan Dockerfile
Untuk containerisasi aplikasi Anda, buat file bernama Dockerfile di direktori yang sama:
nano Dockerfile
Isi Dockerfile dengan konten berikut:
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go mod init example.com/app
RUN go build -o main .
FROM gcr.io/distroless/base
COPY --from=builder /app/main .
CMD ["/main"]
Langkah 3 — Mengatur Docker Compose
Selanjutnya, kita perlu mengatur file docker-compose.yml untuk mengatur layanan yang akan kita jalankan:
nano docker-compose.yml
Tambahkan konfigurasi berikut:
version: '3.8'
services:
app:
build: .
ports:
- "8080:8080"
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app
Langkah 4 — Menyiapkan Nginx
Buat file konfigurasi Nginx bernama nginx.conf di direktori yang sama:
nano nginx.conf
Isi file tersebut dengan konfigurasi Nginx berikut:
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
proxy_pass http://app:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
Setelah semua file siap, Anda bisa menjalankan aplikasi Anda dengan perintah berikut:
docker-compose up --build
Konfigurasi Lanjutan
Setelah berhasil menjalankan aplikasi, Anda dapat menambahkan SSL dengan Let's Encrypt menggunakan nginx-proxy. Anda perlu menambahkannya ke docker-compose.yml Anda.
version: '3.8'
services:
app:
build: .
expose:
- "8080"
nginx:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx.conf:/etc/nginx/nginx.conf
environment:
- DEFAULT_HOST=your_domain
depends_on:
- app
Dengan menambahkan nginx-proxy, Anda akan bisa mengakses aplikasi Anda dengan domain yang sudah Anda daftarkan. Pastikan untuk mengganti your_domain dengan nama domain Anda yang sebenarnya.
Best Practices
- Gunakan versi terbaru dari Docker dan Nginx untuk pemeliharaan dan keamanan yang lebih baik.
- Selalu gunakan
ENVuntuk menyimpan variabel sensitif. - Rencanakan pengelolaan log dengan baik agar mudah dalam troubleshooting.
Troubleshooting
Jika Anda mengalami masalah saat akses aplikasi, periksa status container dengan perintah:
docker ps
Untuk melihat log kesalahan, gunakan:
docker-compose logs
Jika Nginx tidak berfungsi, periksa file nginx.conf Anda untuk kesalahan penulisan atau sintaks.
Kesimpulan
Dengan mengikuti langkah-langkah di atas, Anda telah berhasil mendistribusikan aplikasi web Go Anda di Ubuntu menggunakan Docker dan Nginx. Anda sekarang dapat mengakses aplikasi Anda melalui domain yang telah Anda daftarkan dan dikonfigurasi dengan SSL. Ini adalah langkah awal yang baik untuk mengembangkan aplikasi yang lebih kompleks. Jangan ragu untuk menyelami lebih dalam dan menambahkan fitur sesuai dengan kebutuhan aplikasi Anda!
Jika Anda membutuhkan bantuan lebih lanjut, jangan ragu untuk menghubungi kami.
Konsultasi Jasa Setup SekarangVerifikasi Teknis
Panduan ini disusun berdasarkan referensi teknis terbaru. Namun, konfigurasi server dapat bervariasi. Lihat sumber referensi asli →
📚 Artikel Terkait
Install EPrints 3.4 on Ubuntu 22.04: A Step-by-Step Tutorial
528 kata • Baca selengkapnya →
Cara Membuat VirtualHost di XAMPP versi Linux
579 kata • Baca selengkapnya →
Cara Install Vesta Control Panel di Linux
559 kata • Baca selengkapnya →
Cara Menggunakan Kamera Android Sebagai Webcam di Ubuntu 20.04
806 kata • Baca selengkapnya →