Tutorial Docker untuk Pemula : Part 5

Halo gengs, akhirnya sampai juga di penghujung tutorial tentang docker. Dari tulisan-tulisan gw sebelumnya, kalian sudah mempelajari bagaimana cara docker bekerja, membuat koneksi mysql dengan docker, lalu menginstall bahasa pemrograman php dengan docker dan yang terakhir bermain dengan redis dan rabbitmq. Sebagai seorang beginner di docker, kemampuan kalian sudah meningkat cukup pesat, hanya saja akan cukup stress setiap kali mau koding harus jalanin command tersebut secara satu per satu. Bukankah hidup akan lebih mudah apabila kita bisa melakukan itu dengan menjalankan 1 command saja dimana sudah menjalankan mysql, php, redis dan rabbit secara bersamaan. Apakah hal itu memungkinkan dalam docker? Ya itu sangat mungkin dan inilah tahap pembelajaran terakhir sebagai seorang pemula dalam docker. Di tahap terakhir ini, maka bisa dipastikan kalian bisa sedikit sombong mengenai docker ( tapi sombong itu tidak baik, jadi ga perlu gitu juga lah ). Lalu apa yang bisa kita lakukan agar 1 command bisa menjalankan semua command itu secara bersamaan? Jawabannya adalah docker-compose. Yuk kita pelajari lebih lanjut mengenai docker compose.

Dalam official sitenya, docker compose merupakan sebuah tools untuk mendefine dan menjalankan multiple container docker secara bersamaan dengan menggunakan sebuah YAML file. Bagi kalian yang belum tahu mengenai yaml file, mungkin bisa googling aja dulu karena gw ga akan menjelaskan mengenai hal tersebut secara mendetail. Untuk tutorial kali ini, gw akan menggabungkan semua tutorial yang gw tuliskan sebelumnya yakni mysql ( dengan menggunakan percona ), php, redis dan juga rabbitmq. Dengan 1 command line, maka semua containernya akan run secara bersamaan. Yang pertama kali perlu kita buat adalah yaml filenya.

Diatas merupakan contoh docker-compose.yml untuk menjalanankan php, redis, rabbitmq dan percona. Gw akan jelaskan satu persatu mengenai komponen yang tertulis di file yml tersebut.

  1. version : digunakan untuk menyesuaikan compose file dengan docker engine yang digunakan sekarang. Berhubung gw menggunakan docker engine versi latest, maka gw menggunakan version 3. Sebenarnya version 3 merupakan version majornya, kalau kalian mau menggunakan sampai minor versionnya kalian bisa menggunakan 3.7. Untuk table versioning bisa dilihat disini.
  2. services : digunakan untuk mengidentifikasi images yang akan dibuat containernya. Untuk case kali ini, kita akan menggunakan php, rabbitmq, redis dan percona.
  3. volume : digunakan untuk menstore data dari container. Khusus volume, cara penggunaannya agak lebih ribet jadi untuk case kali ini, kita tidak akan membahas terlalu banyak. Akan dibahas di tulisan terpisah ( perhaps) .

Selanjutnya kita akan membahas mengenai masing-masing servicenya. Di setiap service yang akan dijalankan, gw selalu memberikan separator sesuai dengan nama service tersebut. Gw akan mengambil contoh disini untuk case php.

Jadi snippet diatas menunjukan bahwa gw akan menjalankan container php berdasarkan image php:<tags> dengan nama container be_php dan data php untuk container berikut akan di binding dengan volume yang tertulis diatas. Jika kalian bingung, maka gw akan membuat command linenya supaya kalian mengerti.

Jika kalian mengikuti tutorial docker dari awal, kalian harusnya mengerti mengenai command yang gw tulis diatas. Untuk yang berikutnya adalah percona.

Untuk snippet db mirip dengan php hanya saja ditambahkan port agar kita bisa membinding port container dengan port local laptop kita. Seperti yang gw jelaskan pada tulisan sebelumnya, ketimbang kita harus mengakses menggunakan ip public network docker, kita bisa membinding dengan localhost laptop kita sehingga mempermudah kita dalam menjalankan percona di local. Mungkin yang baru disini adalah komponen restart:always. Disini bertujuan untuk memastikan bahwa ketika service docker dinyalakan berjalan secara bersamaan, ada kemungkinan antar service terganggu yang menyebabkan service lain tidak dapat UP. Oleh karena itu dengan memaksa service mysql restart, maka apabila mysql tiba-tiba tidak up pada saat di run, docker secara otomatis akan merestart container tersebut untuk memastikan bahwa service tersebut harus jalan. Mari kita lanjut ke redis.

Untuk snippet redis sendiri, yang perlu digaris bawahi adalah ketika menjalankan redis, kita ingin menambahkan password. Nah di compose sendiri ada komponen bernama command yang digunakan untuk mengidentifikasi bahwa ketika container itu up, hal yang pertama kali harus dijalankan adalah command tersebut diatas. Nah dalam hal ini, adalah memberikan password pada redis-cli. Selanjutnya adalah membind port 6379 dari local container dengan port laptop kita. Dan untuk snippet yang terakhir adalah rabbitmq.

Untuk snippet rabbitmq, hampir mirip dengan redis dan mysql dimana kita kan langsung membinding port local container rabbitmq dengan port local laptop kita. Nah yang belum sempat gw jelaskan dengan db diatas adalah komponen environment dimana ini menunjukkan default yang bisa kita set sebelum kita running container tersebut. Untuk default parameternya sendiri tergantung dari images yang dipakai. Sebagai contoh pada saat run percona, default enviroment yang digunakan adalah set root password dan user password. Untuk rabbitmq sendiri adalah default user dan pass untuk masuk ke dalam rabbitmq itu sendiri.

Oke, lanjut ke tahap akhir untuk menjalankan docker compose. Selanjutnya kita tinggal save dengan nama docker-compose.yml. Ingat jangan salah nama karena docker hanya mengidentifikasi nama file docker-compose.yml. Selanjutnya kita tinggal menjalankan command berikut.

Hasilnya sebagai berikut.

Run Docker Compose

Run Docker Compose

 

Untuk mengecek apakah sudah berjalan jangan lupa menggunakan command yang seperti biasa. Hasilnya akan seperti ini.

Docker Compose Already Run

Docker Compose Already Run

 

Oke, dengan ini semua aplikasi sudah run. Lalu bagaimana cara mengeceknya? Ya silahkan mengecek sendiri seperti yang sudah kita lakukan di tutorial-tutorial sebelumnya. Nah lalu apakah mungkin kita bisa mengkill semua aplikasi secara bersamaan? Tentu saja bisa, dengan command berikut.

Hasilnya nanti seperti ini.

 

Docker Compose Down

Docker Compose Down

 

Mantap, dengan demikian kalian sudah mempelajari cara running docker dari menggunakan simple command line sampai dengan menggunakan docker compose. Demikian sedikit tutorial gw untuk docker, namun bukan berarti tutorial ini selesai. Yang selesai hanya untuk versi beginnernya saja, berikutnya kita akan masuk ke level docker yang lebih tinggi lagi. Buat kalian yang belum sempat membaca versi sebelumnya, bisa mulai dari tulisan dibawah ini.

Tutorial 1

Tutorial 2

Tutorial 3

Tutorial 4

Sampai jumpa di tutorial berikutnya.