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 :
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 :
Oke sekian hasil percobaan yang saya lakukan, semoga teman-teman dapat melakukan percobaan sesuai dengan hasil yang diharapkan, kalo belom coba banyak berdoa #HiyaHiyaHiya