Deployment with The Legendary Whale, Docker

Iskarim Rezki
Scrum Booster
Published in
3 min readApr 29, 2019

Deployment Process menggunakan si paus Docker.

Apa itu Docker & Kenapa Docker?

Sejujurnya, saya juga kurang memahami apa docker di awal project ini karena pada project ini saya jarang sekali menyentuh sisi backend. Jadi dapat dibilang saya perlu melakukan banyak research dan learning tentang docker ini.

Dari kegiatan research yang cukup singkat, inilah beberapa hal yang saya dapatkan setelah saya berseluncur di luasnya lautan internet untuk menagkap paus docker ini :

Docker adalah sebuah tools yang dirancang untuk mempermudah developer untuk create, deploy, and run aplication dengan menggunakan sebuah wadah atau disebut Container. Container memungkinkan developer untuk mengemas aplikasi dengan semua bagian yang dibutuhkannya, seperti libraries dan dependensi lainnya, dan mengirimkan semuanya sebagai satu paket(package).

Lalu kenapa docker ?

Untuk simple nya, docker ini bisa bikin developers less confused ketika mereka udah membuat aplikasi selama beberapa hari di local machine mereka dan ketika di deploy tiba-tiba aplikasi itu enggak bisa di run. Biasanya kejadian kaya begini terjadi karena ada beberapa dependencies yang harus di install in order to run the application tapi lupa dimasukin ke build.gradle, manifest.xml, dan sejenisnya. Nah Docker ini ibarat sebuah cheatsheet yang kosong kemudian kita isi dengan kebutuhan kita. Ketika Docker ini ingin digunakan, barulah kita memberi tau apa-apa saja yang Docker ini perlu tau. Dependencies apa aja yang perlu di download dan di install supaya aplikasinya bisa jalan. Jadi aplikasi yang kita buat akan berjalan saat di deploy.

Ada beberapa istilah Docker :

  1. Docker daemon adalah sebuah service yang dijalankan didalam host dalam operating system kalian . Berfungsi untuk menjalankan proses di environment yang terpisah atau biasanya untuk membuat environment baru. Proses ini yang nanti akan membuat container Linux baru. Daemon itu gak berhubungan langsung dengan users, jadi caranya supaya bisa mengontrol daemon adalah dengan Docker Client/CLI.
  2. Docker Image adalah sebuah template, atau yang kita sebut Dockerfile,untuk docker container.

3. Docker Container

Docker container ini yang dibuat oleh daemon tadi. Container berjalan diatas image dan setiap perubahan yang disimpan pada container akan menyebabkan terbentuknya layer baru di atas base image.

untuk membuat container baru:

docker build -t registry.docker.ppl.cs.ui.ac.id/pplb3/db-baru:latest .
#push image
docker push registry.docker.ppl.cs.ui.ac.id/pplb3/db-baru:latest

untuk menjalankan container:

docker run -it -p 24150:24151 registry.docker.ppl.cs.ui.ac.id/pplb3/db-baru:latest

4. Docker Registry

Docker registry adalah kumpulan docker image yang bersifat public dan private repository. Registry public Docker disebut dengan Docker Hub. Disini kita bisa push image kita sendiri maupun pull image.

Deployment!

Manual deployment

Sebenernya bisa aja deployment itu ga harus otomatis, jadi build imagenya akan dilakukan secara lokal. Nah commandnya:

docker build -t  . registry.docker.ppl.cs.ui.ac.id/pplb3/<nama-image>:latest
docker push registry.docker.ppl.cs.ui.ac.id/pplb3/<nama-image>:latest

Gitlab deployment

Tapi kalo mau supaya otomatis setiap kali nge-push di gitlab, maka kita perlu bikin .gitlab-ci.yml

berikut file .gitlab-ci.yml dari scrum booster :

--

--

Iskarim Rezki
Scrum Booster

Computer Science Student and a passionate dreamer