Docker and Deployment

Wildan Fahmi Gunawan
Scrum Booster
Published in
3 min readApr 30, 2019
Hasil gambar untuk docker

Dalam pengembangan perangkat lunak, tentu akan tiba saat dimana kita menaruh aplikasi yang sudah kita buat kedalam suatu link atau server yang bisa diakses oleh pengguna. Hal ini biasa disebut dengan Deployment. Dalam PPL, Scrum Booster juga melakukan yang hal sama. Karena ini adalah sebuah bentuk pembelajaran, server dimana Scrum Booster akan di deploy sudah disediakan oleh Fakultas. Server yang disediakan Fasilkom perlu melakukan virtualisasi untuk menjalankan program-program yang di deploy ke server tersebut untuk dijalankan. Agar bisa menjalankan tugasnya dengan baik, server dibantu oleh Docker. Namun, Apakah Docker itu ?

Docker

Docker adalah alat yang dibuat untuk memudahkan proses pembuatan, deploy, dan menjalankan aplikasi menggunakan container. Container memungkinkan developer untuk mengemas sebuah aplikasi bersamaan dengan semua kebutuhannya seperti libraries dan ketergantungannya, kemudian mengirimkannya sebagai sebuah paket. Dengan begitu, menggunakan container, program tetap dapat berjalan dalam mesin linux apapun tanpa dipengaruhi pengaturan berbeda yang dimiliki mesin tersebut yang bisa jadi berbeda dari mesin yang digunakan untuk menulis dan menguji program tersebut.

Dapat dikatakan bahwa Docker serupa dengan virtual machine, tetapi daripada membuat seluruh sistem operasi virtual, Docker memungkinkan aplikasi untuk menggunakan linux kernel sebagai sistem tempat mereka berjalan dan hanya memerlukan aplikasi dan ketergantungannnya. Hal ini membuat penggunaan Docker lebih hemat dalam sumber daya.

Implementasi Docker

Di ScrumBooster, kami menggunakan Docker sebagai tempat deployment API kami yang nantinya akan digunakan oleh aplikasi ScrumBooster. Untuk dapat menggunakan Docker, sebelumnya kami harus membuat image dari kode API kami kemudian di push ke repository miliki PPL. Perlu ada penyesuaian dan file-file tambahan agar nantinya program kita dapat berfungsi ketika di deploy di Docker.

Dalam implementasi di Scrum Booster, file tambahan yang menjadi kebutuhan untuk Docker adalah Dockerfile dan start.sh . CI-CD pun juga mengalami perubahan agar Aplikasi kita yang kita push ke gitlab langsung terotomatis dibuat imagenya kemudian di deploy ke Docker.

Dockerfile

Dalam dockerfile, ada beberapa hal yang kita definisi kan, Yang pertama adalah “FROM”, pada FROM ini kita mendefinisi kan , image docker apa yang ingin kita import yang nantinya dapat menunjang jalannya aplikasi kita pada. Kemudian “WORKDIR” adalah bagian dimana kita menginisiasi /app sebagai working direktori dari aplikasi kita. “COPY” berarti mengcopy apa yang ada pada direktori kita kedalam image yang akan kita buat. “EXPOSE” berarti menetukan port berapa yang akan kita buka untuk nantinya kita gunakan. Yang terakhir, “CMD” berarti argumen selanjutnya adalah sesuatu yang akan dijalankan pada CMD, dalam hal ini adalah start.sh

start.sh

Start.sh berisi apa saja yang dilakukan ketika image dari aplikasi kita di mount ke container yang ada di Docker. Untuk image kita bisa sampai kesana, sebelumnya kita perlu membuat script pada CI-CD gitlab yang memastikan setiap kali kita mem-push pekerjaan kita, secara otomatis akan terbuat image baru dari aplikasi kita dan terdeploy ke dalam repository PPL. Oleh karena itu lah ada bagian ini dari CI-CD gitlab dari Scrumbooster.

Potongan kode membuat Image dan Deployment

Docker Orchestration

Dalam matakuliah PPL, tentunya tidak hanya Scrum Booster yang menggunakan Docker, akan tetapi setiap kelompok juga menggunakannya, lalu bagaimana caranya agar semua kelompok bisa memakai Docker secara bersamaan dan bagaimana caranya agar kesalahan pada satu kelompok tidak mempengaruhi pekerjaan kelompok yang lain? Inilah fungsi Docker Orchestartion. Docker menggunakan sistem container seperti yang sudah dijelaskan sebelumnya. Docker Orchestration mengatur lifecycle dari setiap container dan pengaturannya dalam lingkuang yang dinamis. Dalam PPL, Docker Orchestration yang digunakan adalah Docker Swarm. Docker Swarm mengautomasi berbagai tugas seperti deployment dari container, alokasi dari sumberdaya diantara container, dan memonitoring jalannya container dan hosts itu sendiri.

--

--