Dockerize It!

Kris Tianto
Basic People
Published in
3 min readApr 29, 2019

Halo semua! Pada blog kali ini, saya akan menjelaskan secara singkat apa itu Docker dan bagaimana implementasinya dalam proyek LAPOR! yang sedang saya dan tim kerjakan. So, let’s check this out!

Apa itu Docker?

Docker merupakan suatu tool yang didesain untuk mempermudah proses create-deploy-run suatu aplikasi dengan menggunakan containers. Jadi, docker tidak berdiri sendiri, melainkan menggunakan suatu teknologi di dalamnya yang disebut containers. Containers itu sendiri merupakan suatu wadah yang digunakan oleh developer untuk menggabungkan aplikasi yang dibuat dengan semua parts yang mendukung aplikasi tersebut, seperti library dan dependencies lainnya, lalu dirilis sebagai satu package (hanya satu package). Ada perbedaan yang cukup mencolok antara Docker dan Virtual Machine, yaitu daripada men-create keseluruhan virtual OS, Docker mengizinkan applications untuk menggunakan Linux kernel yang sama dengan yang digunakan oleh sistem.

Kenapa Docker?

Oke, sekarang timbul pertanyaan, kenapa kita menggunakan Docker? Jawaban yang paling utama adalah karena kewajiban PPL! Tentunya bukan hanya itu saja jawabannya, ada beberapa keuntungan yang dapat diperoleh dari menggunakan Docker, seperti:

  • Simplifying configuration, memfasilitasi developer untuk mengatur environment dan configuration pada code lalu men-deploy-nya tanpa harus menginstall virtual OS secara keseluruhan.
  • Adanya code pipeline management di dalam Docker, seperti Git, sehingga memungkinkan untuk melakukan perubahan ke image Docker dan melakukan version control.
  • Docker memastikan application dan resource terisolasi secara terpisah, sehingga dapat meningkatkan performa dan mengurangi pemakaian storage.

Implementasi Docker

Untuk menginisiasi sebuah image Docker, kita memerlukan sebuah file yang bernama Dockerfile para root directory project kami. File tersebut berisi script-script yang nantinya akan dijalankan secara otomatis di Gitlab CI Runner. Konfigurasi Dockerfile yang kami gunakan dapat dilihat pada gambar di bawah ini.

Konfigurasi Dockerfile dari React App

Script yang kami gunakan cukup sederhana. Script dalam Dockerfile yang kami buat diawali dengan mendefinisikan base image yang akan digunakan untuk memulai build process dengan menggunakan command FROM. Karena kami membuat suatu React App, maka base image yang akan kami gunakan adalah node:8.15.1-jessie-slim. Setelah itu, kami menggunakan command COPY untuk memberitahu sistem, files apa saja yang harus di-copy ke dalam image Docker (di-bundle). Selanjutnya, dengan menggunakan command EXPOSE, kami menentukan secara spesifik port mana saja yang dapat digunakan oleh Docker Image yang kami buat. Port-port tersebut nantinya dapat digunakan untuk mengakses Docker Image melalui IP atau URl. Terakhir, kami menggunakan command CMD yang digunakan untuk mengeksekusi command-command yang dideklarasikan di dalam list, jadi kami akan menjalankan command “npm run startstaging”.

Untuk melakukan deployment, khususnya melalui Gitlab CI, kami menggunakan script seperti pada gambar di bawah ini:

Docker pull digunakan untuk pull image Docker versi terakhir dari server. Selanjutnya, docker build digunakan untuk membuat image baru. Setelah itu, docker tag digunakan untuk menandakan bahwa image yang sudah kami buat menjadi image terbaru (latest) pada server. Deployment kemudian diakhiri dengan melakukan docker push untuk mem-push image tersebut ke server. Selain beberapa langkah di atas, kita juga bisa me-run image secara local dengan menjalankan perintah docker run -p <port>:<port><image-tag>

Sekian blog dari saya kali ini, semoga bermanfaat!

--

--