Introduction to Docker
What is Docker ???
Sebagai seorang programmer, kita pasti tidak asing dengan kata Docker. Namun apakah sebenarnya Docker itu? Setelah berkelana di Internet, akhirnya saya dapat menyimpulkan apa itu Docker dengan bahasa yang mudah dimengerti.
“Docker adalah sebuah platform yang menyediakan sebuah layanan dimana kita dapat membangun dan menjalankan sebuah aplikasi dengan mudah”
Ide docker sebenarnya didasari pada pengemasan aplikasi ke dalam sebuah container yang nantinya dapat dijalankan pada segala macam environment yang berbeda-beda.
Core Concepts
Terdapat tiga konsep dasar yang ada pada docker. Tiga hal tersebut adalah:
- Docker Image
- Docker Registry
- Docker Container
Docker Image
Adalah sebuah template yang digunakan sebagai blueprint untuk membuat Docker Container. Analogi lain yang dapat digunakan adalah pikirkan Docker Image sebagai sebuah class dan Docker Container sebagai sebuah object yang dibuat oleh class tersebut. Docker Image dapat dibuat menggunakan sebuah file yang bernama Dockerfile. Docker file adalah sebuah file yang menetukan langkah-langkah yang diperlukan dalam pembuatan sebuah Docker Image.
Docker Registry
Pikirkan ini sebagai GitHub/GitLab untuk Docker Image. Docker Registry adalah sebuah repository untuk menyimpan dan mengambil Docker Image.
Docker Container
Container adalah hasil dari Docker Image. Container hampir mirip dengan sebuah Virtual Machine(VM) yang menjalankan aplikasi dan dependenciesnya. Di containerlah biasanya aplikasi nantinya akan dijalankan.
Implementasi Kelompok
Continuous Integration
Ini adalah proses integrasi kode pada sebuah repository yang dilakukan secara otomatis dan bertujuan untuk mendeteksi error sehingga dapat segera melakukan perbaikan jika terjadi kesalahan.
Pada kelompok kami, CI digunakan untuk melakukan testing yang dilakukan secara otomatis.
Testing
Pada proses testing kelompok kami memperlihatkan coverage. Coverage berperan untuk memberikan informasi untuk bagian kode mana saja yang sudah dilakukan testing.
Continuous Deployment
Ini adalah tahap deploy aplikasi yang dilakukan secara otomatis pada product environment. Tahap ini dilakukan jika proses testing sudah lulus dan branch berada pada staging.
Dalam melakukan deploy otomatis seharusnya memanfaatkan penggunaan stack yang ada pada Portainer.
Orchestration
Dikarenakan kita menggunakan serverless. Maka flow penggunaan container sedikit berbeda. Dalam hal ini kontainer yang dibuat ada 2, untuk backend dan frontend.
Cara mengkoneksikan frontend dan backend adalah dengan menggunakan fetch pada bagian frontend.