github linkedin instagram email
Docker for Dummy With Golang & MySQL
Dec 13, 2018
3 minutes read

Docker_For_Dummy

Say Hi…

Halo teman-teman, lama belom nulis karena sedang ada beberapa kesibukan dan harus belajar yang bener sebelum nulis hehe. Pada kesempatan ini, saya akan membagikan pengalaman saya mengenai bagaiamana mengoperasikan docker secara sederhana melalui contoh aplikasi Golang. Tentunya artikel ini bukan artikel yang ditujukan kepada mastah-mastah yang sudah malang melintang di dunia devops. Saya menulis artikel ini dalam perspektif supaya saya yang seorang developer sedikit tahu apa yang dilakukan teman-teman devops supaya ketika bekerjasama nantinya akan mendapatkan hasil yang efektif.

Ngapain sih pake Docker?

Secara sederhana saya akan coba menjelaskan sebeneranya apa tujuan menggunakan docker di dalam lingkungan software development. Docker dalam perspective saya adalah tools untuk menyamakan environtment antara komputer lokal, server development , dan server production. Sehingga Docker ini dianalogikan sebagai tools untuk membuat sebuah container-container yang berisi binary aplikasi yang siap dijalankan, software developement kit , nginx, mysql, dsb yang saling ketergantungan dan versi nya harus sesuai untuk menjalankan aplikasi. Keuntungan lainnya seperti aplikasi yang terisolasi dan kemudahan dalam melakukan scalability , tapi kita tidak akan panjang lebar di teori. Mari kita PRAKTEK!!! #HiyaHiyaHiya

Bikin Golang & MySQLnya dulu Braderr…

Asumsinya, temen-temen sudah menginstall docker , golang, mysql di komputer masing-masing #HiyaHiyaHiya. Sebelum mulai, silahkan buat database dan data nya dulu dengan MySQL :


CREATE DATABASE dockeraja;

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `is_active` int(11) DEFAULT NULL COMMENT 
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=latin1;

// lalu silahkan Insert dengan data kalian sendiri suka suka ... #HiyaHiyaHiya

Oiya jangan lupa kita harus memastikan supaya aplikasi docker dapat mengakses host mysql yakni dengan cara :

Dapatkan data ip address kita yang bisa diakses dengan ifconfig (linux/macOS) xixixixi :D

~indraoctama-terminal>ifconfig
en6: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=3<RXCSUM,TXCSUM>
	ether 00:50:b6:1c:be:b6 
	inet6 fe80::107c:152c:8376:7b3%en6 prefixlen 64 secured scopeid 0x5 
	inet 192.168.10.191 netmask 0xffffff00 broadcast 192.168.10.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (100baseTX <full-duplex,flow-control>)
	status: active

Setelah melakukan command di atas, kita mendapatkan ip address yang bisa diakses adalah 192.168.10.191. Sehingga kita nanti akan melakukan set DB_HOST= 192.168.10.191 dan DB_PORT=3306 (default). Untuk user dan password mysql kalian bikin sesuai keikhlasan masing2 :D. Jika teman-teman mengalami kendala tidak bisa mengakses dengan kondisi host di atas bisa mencoba artikel ini : GRANT mysql user to remote IP

Lanjut ke Golang

Kita akan membuat struktur folder aplikasi seperti gambar berikut ini : Struktur_Folder

main.go

Dockerfile

FROM golang:1.11.1

MAINTAINER Indra Octama omyank2007i@gmail.com
ADD . /go/src/dockerinaja

ARG appname=e-document-api
ARG http_port=1323

RUN go get -d github.com/go-sql-driver/mysql
RUN go get -d github.com/labstack/echo
RUN go install dockerinaja

ENTRYPOINT /go/bin/dockerinaja

ENV PORT $http_port
ENV DB_HOST 192.168.10.191
ENV DB_PORT 3306
ENV DB_USER userdocker
ENV DB_PASS passdocker

EXPOSE $http_port

RUN mkdir -p /go/src/dockerinaja
COPY . /go/src/dockerinaja
WORKDIR /go/src/dockerinaja

CMD go run main.go

Dockerizing … #HiyaHiyaHiya

Setelah selesai ngodingnya, maka kita bisa cobain command berikut (tentunya masih dalam satu folder “dockerinaja” diatas) :

Build image apps

docker build -t dockerinaja .

Command di atas akan mengenerate docker image untuk keperluan menjalankan aplikasi.

Check Images

Kita dapat mengecheck apakah image sudah terbentuk? Yakni dengan command berikut :

docker images

Lalu penampakan nya kurang lebih seperti ini :

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
dockerinaja         latest              78de7207aa5a        3 minutes ago       952MB
golang              1.11.1              45e48f60e268        2 minutes ago       777MB

Run image aplikasinya

Lalu kita dapat menjalankan aplikasinya sebagai berikut :

docker run -p 1323:1323 -t dockerinaja

untuk check apakah sudah running atau belum dengan cara berikut :

docker ps

Lalu akan terjadi penampakan sebagai berikut :

CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS         PORTS                   NAMES
9e29660a6901   dockerinaja  "/bin/sh -c /go/bin/…"   5 seconds ago    Up 5 seconds   0.0.0.0:1323->1323/tcp  upbeat_hamilton

Kita telah berhasil menjalankan aplikasi golang dengan docker, mari kita coba dengan insomnia :

InsomniaAPI Oke sekian hasil percobaan yang saya lakukan, semoga teman-teman dapat melakukan percobaan sesuai dengan hasil yang diharapkan, kalo belom coba banyak berdoa #HiyaHiyaHiya

Source Code



Back to posts


comments powered by Disqus