DevOps

Cara Deploy Golang ke VPS dengan Docker

Panduan lengkap deploy aplikasi Golang ke VPS menggunakan Docker dengan cara yang cepat dan aman.

Rama Mai05 Okt 20239 min read

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.