Banyak cara untuk melakukan instalasi bahasa pemrograman di dalam server, bahasa pemrograman tersebut bisa diinstal juga ke dalam container seperti Docker untuk memudahkan virtualisasi. Pada artikel ini kamu akan mempelajari tentang bagaimana cara deploy aplikasi Go ke Docker.

Go 

Go atau Go Language (Golang) merupakan salah satu bahasa pemrograman open-source yang dibuat oleh Google. Ada banyak aplikasi populer yang dibuat dengan bahasa pemrograman Go, yaitu Kubernetes, Docker, Hugo, dan Caddy.

Docker

Docker adalah Platform as a Service (PaaS) open source yang memungkinkan virtualization dilakukan dalam satu server yang sama. Pengaturan software beserta file/hal pendukung lainnya akan menjadi sebuah Image (istilah yang diberikan oleh Docker). Hasil instan dari Image tersebut kemudian disebut Container.

Dulu, aplikasi atau bahasa pemrograman seperti Go di-deploy pada VM (Virtual Machine). Namun, VM membutuhkan resource yang besar, berbeda dengan Docker yang dapa memudahkan para engineer untuk melakukan monitoring dan mengelola environment container dengan resource yang lebih kecil.

Penjelasan Docker lebih lengkapnya dapat kamu baca di artikel Tutorial Docker dalam Bahasa Indonesia.

Persyaratan 

Sebelum memulai proses instalasinya, pastikan kamu telah memenuhi beberapa persyaratan berikut:

  • Memiliki server dengan CentOS 7.
  • Memiliki akses sebagai root.

Cara Deploy Aplikasi Go ke Docker

Kamu harus melakukan instalasi Docker terlebih dulu. Kunjungi artikel berikut untuk mempelajari cara instalasinya: Cara Install Docker di CentOS 7.

Jika kamu sudah memastikan bahwa Docker telah terinstal dengan dan dapat digunakan, maka selanjutnya ikuti langkap berikut ini.

Step 1 – Create Directory

 

$ mkdir golang

 

Buat direktori untuk menempatkan contoh script aplikasi Go.

Step 2 – Create File Go

Ke direktori Golang dan tambahkan script di bawah ini.

 

$ nano maingo.go

 

package main

 

import (

  “fmt”

  “log”

  “net/http”

)

 

func index(w http.ResponseWriter, r *http.Request) {

  fmt.Fprintf(w, “Hi, this is Docker Dewiweb!”)

}

 

func about(w http.ResponseWriter, r *http.Request) {

  fmt.Fprintf(w, “Hi, this is Docker Dewiweb!”)

}

 

func main() {

  http.HandleFunc(“/”, index)

  http.HandleFunc(“/about”, about)

 

  log.Println(“application started at port :8000”)

  log.Fatal(http.ListenAndServe(“:8000”, nil))

}

 

Save dan exit.

Step 3 – Create Dockerfile

Cara deploy aplikasi Go ke Docker belum selesai. Saat ini kamu memerlukan sebuah Dockerfile untuk membangun sebuah Docker yang berbentuk image. Script Dockerfile ini berisi instruksi untuk membangun sebuah image. Ini cara membuatnya.

 

$ nano Dockerfile

 

FROM golang:1.10.5-alpine3.8

 

WORKDIR /go/src/app

COPY maingo.go .

RUN go build -o main .

EXPOSE 8000

CMD [“./main”]

 

Instruksi di atas menggunakan based image Golang yang menggunakan Alpine Linux, kemudian menambah file main.go ke /go/src/app. Selanjutnya menjalankan dan mengompilasi aplikasi Go ke biner, membuka port, lalu menjalankan aplikasinya.

Step 4 – Docker Build

Setelah membuat file atau script di atas, jalankan Docker build-nya.

 

$ sudo docker build -t appgo:1.0 .

 

Sending build context to Docker daemon   5.12kB

Step 1/6 : FROM golang:1.10.5-alpine3.8

 —> 2f577258bd10

Step 2/6 : WORKDIR /go/src/app

 —> Using cache

 —> 02e7a4372490

Step 3/6 : COPY maingo.go .

 —> ca6c0aa64b4c

Step 4/6 : RUN go build -o main .

 —> Running in 8cfc9c02f83b

Removing intermediate container 8cfc9c02f83b

 —> e7e117cb94e7

Step 5/6 : EXPOSE 8000

 —> Running in cb8978dec6ee

Removing intermediate container cb8978dec6ee

 —> 178f8ac7b042

Step 6/6 : CMD [“./main”]

 —> Running in 27cf8b054ac7

Removing intermediate container 27cf8b054ac7

 —> 22841e195431

Successfully built 22841e195431

Successfully tagged appgo:1.0

 

Saat ini kamu sudah selesai membuat image Docker.

Gunakan command di bawah ini untuk melakukan pengecekan image.

$ docker images

 

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

appgo               1.0                 22841e195431        55 seconds ago      265MB

golang              1.10.5-alpine3.8    2f577258bd10        14 months ago       258MB

Step 5 – Running Container

Langkah untuk cara deploy aplikasi Go ke Docker yang terakhir, jalankan container dari image yang sudah dibuat sebelumnya menggunakan command di bawah ini.

 

$ docker run -d –name appgo -p 8000:8000 appgo:1.0

 

Perintah atau command di atas menjalankan container dengan nama appgo dan mengeksposnya ke port 8000.

 

Kamu bisa mengecek container yang berjalan seperti di bawah ini.

$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES

158c9c686504        appgo:1.0           “./main”            48 seconds ago      Up 47 seconds       0.0.0.0:8000->8000/tcp   appgo

 

Kemudian kamu bisa coba akses Docker container yang berjalan dengan URL: https://IP-Server:port.

Cara Deploy Aplikasi Go ke Docker hi

Simpulan

Jika dilakukan dengan tepat, seharusnya saat ini kamu telah berhasil melakukan deploy aplikasi Go ke Docker. Jika ingin menambahkan script aplikasi Go yang lain, ikuti langkah-langkah di atas. Lalu, jika kamu ingin mengetahui cara deploy aplikasi lain, seperti Java dan NodeJS ke Docker, klik tulisan tersebut atau kunjungi tulisan lain di blog Dewaweb.

Demikian artikel cara deploy aplikasi Go ke Docker. Jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb. Semoga artikel ini membantu!

Daftar dan tonton webinar Dewatalks