Docker Orchestration

Fadhlan Hazmi
PPL D7 — Fasilkom UI
3 min readApr 3, 2019
Image result for docker

Apa itu docker? Mungkin bagi anda yang baru mulai ngoding belum familiar dengan kata “docker” ini. Namun, jika anda memiliki teman yang sudah sering menggunakan docker (cc: koneg liquid devOps) dia sering menceritakan berbagai kehebatan docker. Kembali ke pertanyaan awal, apa itu docker?

“Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.” — OpenSource.com

Jadi, saat menggunakan docker anda memisahkan antara aplikasi dengan environment tempatnya dijalankan. Hal ini dilakukan dengan cara menjalankan aplikasi pada sebuah container. Hal ini membuat developer fokus kedalam kode yang dibuat dan devOps fokus pada environment pada container saja.

Why Docker?

Emang apasih kelebihan pake docker dengan containernya? Apakah anda pernah mendevelop aplikasi, namun aplikasi tersebut tidak berjalan di environment lain padahal saat ditest di laptop sendiri jalan? Jika tidak, selamat! Anda tidak perlu melewati semua itu. Jika ya, selamat juga! Docker adalah solusinya.

Setiap docker container, awalnya merupakan sebuah linux machine yang polos dan tidak tahu apa-apa. Dan selanjutnya, kita memberitahu container apa saja yang harus dilakukan dengan membuat dockerfile. What? Apa lagi dockerfile?

Dockerfile

Docker bisa dibilang bukan apa-apa tanpa dockerfile, karena seperti kita tahu sebelumnya tanpa dockerfile, docker container hanyalah sebuah linux machine polos. Jadi dockerfile itu adalah:

“A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image. Using docker build users can create an automated build that executes several command-line instructions in succession.” — Dockerfile reference, docs.docker.com

Hal pertama yang dibutuhkan oleh dockerfile adalah base image. Sebuah base image memberitahu containernya apa yang harus di install pada container. Setelah itu, anda akan memberi tahu apa yang harus diketahui oleh container, seperti environment variabels, dependencies apa saja yang harus di install, dan lain-lain. Dan terakhir, container diberitahu apa saja yang harus dilakukan, hal ini dilakukan dengan membuat perintah pada dockerfile.

Dockerfile commands

Berikut adalah beberapa perintah yang sering digunakan dalam dockerfile:

  • From, menginisialisasi build stage dan menentukan base image yang akan digunakan. Dockerfile yang valid harus menggunakan perintah from.
  • Run, akan mengeksekusi perintah apapun pada layer baru diatas image yang sudah dibuat.
  • Env, menetapkan environment variables.
  • Expose, memberitahu container akan listen pada port berapa. Hal ini penting karena aplikasi akan berjalan pada environment container yang terisolasi.
  • Volume, membuat sebuah mounting point dengan nama yang sudah di spesifikasikan

Dockerfile kelompok PPL kami

dalam pengembangan aplikasi pada proyek ppl, kami juga menggunakan docker. Berikut merupakan isi dockerfile dari kelompok ppl kami karya devOps koneg liquid:

FROM node:8-alpineRUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/appWORKDIR /home/node/appCOPY package*.json ./USER nodeRUN npm install --productionCOPY --chown=node:node . .EXPOSE 8001CMD [ "node", "server.js" ]

Dockerfile tersebut digunakan untuk aplikasi backend kami, ada juga dockerfile untuk aplikasi frontend. Namun untuk kali ini saya hanya akan memberikan dockerfile untuk aplikasi backend saja karena hanya untuk contoh. Semoga dapat bermanfaat!

Sekian tulisan saya mengenai docker. Semoga dengan tulisan saya ini dapat menjadikan anda sebagai devOps yang bermanfaat bagi dev team anda. Sampai bertemu di tulisan saya selanjutnya!

--

--