Pendahuluan
Deploy aplikasi Golang ke VPS menggunakan Docker adalah salah satu cara paling efisien untuk memastikan aplikasi berjalan konsisten di berbagai environment. Dengan Docker, kamu tidak perlu khawatir soal dependency atau perbedaan konfigurasi server.
Persiapan VPS
Pastikan VPS kamu sudah memenuhi beberapa requirement dasar seperti akses root atau sudo, koneksi internet stabil, dan minimal RAM 1GB agar proses build tidak gagal.
Selain itu, gunakan VPS berbasis Linux seperti Ubuntu 20.04 atau 22.04 agar kompatibel dengan Docker dan ecosystem-nya.
Install Docker
Langkah pertama adalah menginstall Docker di VPS. Jalankan perintah berikut:
sudo apt update
sudo apt upgrade -y
sudo apt install docker.io -y
Setelah itu, aktifkan dan jalankan Docker service:
sudo systemctl enable docker
sudo systemctl start docker
Cek apakah Docker sudah berjalan dengan baik:
docker --version
Install Docker Compose (Optional)
Jika aplikasi kamu menggunakan banyak service (database, redis, dll), sebaiknya gunakan Docker Compose.
sudo apt install docker-compose -y
docker-compose --version
Mempersiapkan Aplikasi Golang
Pastikan aplikasi Golang kamu sudah siap untuk di-build. Biasanya struktur project memiliki file main.go dan go.mod.
Contoh struktur sederhana:
/app
├── main.go
├── go.mod
└── go.sum
Membuat Dockerfile
Dockerfile digunakan untuk membangun image aplikasi Golang. Berikut contoh Dockerfile sederhana:
FROM golang:1.21-alpine
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o app
EXPOSE 8080
CMD ["./app"]
Penjelasan singkat: Docker akan menggunakan base image Golang, mendownload dependency, lalu build binary aplikasi.
Build Docker Image
Setelah Dockerfile siap, build image dengan perintah berikut:
docker build -t golang-app .
Jika tidak ada error, image akan berhasil dibuat dan siap dijalankan.
Menjalankan Container
Jalankan container menggunakan command berikut:
docker run -d -p 8080:8080 --name golang-container golang-app
Aplikasi sekarang bisa diakses melalui IP VPS pada port 8080.
Cek Container
Gunakan command berikut untuk memastikan container berjalan:
docker ps
Jika container tidak berjalan, cek log dengan command berikut:
docker logs golang-container
Setup Firewall
Pastikan port 8080 terbuka di VPS agar bisa diakses dari luar:
sudo ufw allow 8080
sudo ufw enable
Reverse Proxy (Optional)
Untuk production, sebaiknya gunakan Nginx sebagai reverse proxy agar bisa menggunakan domain dan SSL.
server {
listen 80;
server_name domainkamu.com;
location / {
proxy_pass http://localhost:8080;
}
}
Tips Optimasi
Gunakan multi-stage build untuk membuat image lebih kecil dan efisien. Selain itu, gunakan Alpine base image untuk menghemat resource.
Kesimpulan
Deploy Golang dengan Docker di VPS memberikan kemudahan dalam portability, scalability, dan maintenance. Dengan setup yang benar, kamu bisa menjalankan aplikasi dengan lebih stabil dan profesional.