Tutorial Docker untuk Pemula : Part 3

Selamat malam guys, berhubung gw lagi semangat untuk menulis dan lagi banyak banget waktu luang karena seminggu ke depan libur lebaran, maka gw akan menulis lagi mengenai docker. Karena pada tulisan sebelumnya gw menceritakan bagaimana cara menggunakan mysql ( percona ) dengan docker, kali ini gw akan menuliskan bagaimana menggunakan docker untuk bahasa pemrograman php. Buat kalian yang biasa menggunakan php sebagai bahasa pemrograman, biasanya paling simple kalian langsung install xampp. Cara ini terbilang cepat karena uda bundling, namun buat yang hanya butuh php saja maka tidak makesense harus install semuanya. Daripada bingung-bingung yuk kita lanjut ke tutorial instalasi php dengan docker.

Nah seperti biasa, sebelum menjalankan docker alangkah baiknya kita mengecek terlebih dahulu images php apa yang akan kita gunakan. Khusus untuk case kali ini, gw akan menggunakan php dengan tag 7.0-fpm-jessie. Jika kalian ingin menggunakan yang lain silahkan saja, kalau sudah menetapkan pilihan mari jalankan perintah berikut ini.

Lalu bagaimana hasilnya ?

 

Run Docker php Foreground

Run Docker php Foreground

 

Untuk mengeceknya, seperti biasa kita akan menggunakan command berikut.

Seteleh dicek hasilnya ternyata sudah jalan.

 

Docker php already running

Docker php already running

 

Ya ampun, gampang banget ya. Tidak diduga sesimple ini jadi master docker.

Eit tunggu dulu, tidak semudah itu ferguso. Sekarang bagaimana cara menjalankan php tersebut di laptop kita? Apakah mirip dengan mysql yang harus mengetahui ip public network terlebih dahulu? Untuk mengecek apakah php yang terinstall sudah benar yakni php 7.0 , kita coba dengan menjalankan command execute yang pernah gw tuliskan sebelumnya.

Apa yang terjadi setelah menjalankan command tersebut? Yak, phpnya mandek, ga keluar apa-apa. Mau ditunggu seribu tahun pun pasti akan begitu aja. So apa yang harus kita lakukan? Karena pada dasarnya command php itu sama dengan command line yang ada di php, mari kita gunakan command php yang lebih proper. Contohnya seperti command berikut.

Lalu bagaimana hasilnya?

 

Docker Run php -v

Docker Run php -v

 

Dengan ini maka docker php telah terinstall dengan sempurna. Eit jangan senang dulu, terus kalau mau ngoding php dari local laptop kita bagaimana? Contoh kalau mau membuat php info lalu dijalankan di browser? Bagaimana caranya gengs?

Di php, kita bisa melakukan hal yang sama dengan di express ( nodeJS) yakni membinding port localhost agar bisa dijalankan di browser. Sebagai contoh kita akan mencoba melakukan di directory tertentu.

Testing Folder Docker php

Testing Folder Docker php

 

Untuk file index.php sendiri hanya berisi command berikut.

Oke, untuk mencoba binding port ke directory tersebut sebaiknya kita masuk ke directory tersebut terlebih dahulu. Setelah masuk ke directory yang akan menjadi root dari main directory php maka jalankan command berikut.

Setelah menjalankan command tersebut maka hasilnya akan sebagai berikut.

 

Run php docker localhost

Run php docker localhost

 

Mari kita lihat hasilnya di browser. Apakah yang keluar ada file index.php yang berisi php info?

Blank Page localhost

Blank Page localhost

 

Ternyata malah hasilnya blank page. Mengapa demikian? Karena pada dasarnya localhost yang dibuat tidak dibinding ke port 3000, namun apakah benar begitu? Berbeda dengan mysql yang dijelaskan pada tulisan sebelumnya, disini php sebenarnya sudah berjalan di port 9000, hanya saja untuk menjalankan localhost ke port 3000 itu tidak bisa lakukan dengan membind port seperti pada mysql. Disini gw ga akan menjelaskan contohnya, kalian yang ingin mencobanya bisa melakukan sendiri. Yang akan gw bahas disini adalah bagaimana kita tetap bisa koding dengan menjalankan script yang di local laptop kita ke environment container. Seperti yang dilihat di gambar sebelumnya, dijelaskan bahwa directory root adalah /var/www/html sedangkan directory local kita adalah /home/bayu/Documents/project/httpdocs. Lalu apa yang harus kita lakukan? Caranya sama dengan binding port, hanya yang kita binding adalah directory container dengan directory local laptop.

Untuk membinding local directory dengan container directory sebenarnya caranya cukup mudah. Sebelum kita menjalankan command yang proper, maka terlebih dahulu kita kill container yang sedang jalan sekarang. Setelah di kill, mari kita coba jalankan command berikut.

Nah untuk yang bingung command tersebut gw akan sedikit menjelaskannya.

c321f133cd7d merupakan nama images untuk php:<tags> yang gw jalankan sebelumnya. Jadi jangan bingung ya kenapa tiba-tiba jadi random string begitu.

-d digunakan untuk menjalankan container secara background, uda gw jelaskan di tulisan sebelumnya.

-v digunakan untuk mengatur volume. Nah untuk volume disini maksudnya bukan data ya, melainkan directory running yang akan dijalankan di container. Commandnya mirip dengan port yakni <physical port>:<container port> kalau di volume maka <pyhsical directory>:<container directory>. Karena directory yang ingin kita jalankan adalah $HOME/Documents/project/httpdocs sedangkan untuk directory container adalah /var/www/html. Untuk mengecek apakah datanya sudah tercopy apa belum bisa menggunakan command berikut.

Hasilnya akan seperti berikut.

 

Docker php /bin/bash

Docker php /bin/bash

 

Bisa dilihat, apa yang ada directory local laptop sudah berada di directory container. Dengan kata lain, apa pun yang kita taro di local directory laptop, maka akan otomatis akan tercopy ke directory container. Nah pertanyaannya, bagaimana cara kita menjalankan script kita tersebut? Ga perlu bingung, sebenarnya kita bisa menggunakan cara yang sama dengan di docker mysql yang gw jelaskan sebelumnya, yakni melihat ip public network container tersebut lalu di bind. Masi ingat kan dengan cara melihat ip public network container?

Setelah mendapatkan ip public network, maka jalankan menggunakan command yang sebelumnya sudah kita jalankan. Jadi kita tidak perlu membinding port dengan localhost melainkan menggunakan public ip container. Berikut commandnya.

Lalu bagaimana hasilnya? Mari kita test di browser kita.

 

Run Docker php in browser

Run Docker php in browser

 

Oke, jadi sekarang sudah berhasil. Gampang kan? Buat kalian yang ingin ngoding php, sekarang ga perlu bingung lagi karena docker telah mempermudah hidup kita hehe. Demikian sedikit tutorial tentang docker php, tulisan berikutnya mungkin akan lebih advanced lagi. So prepare yourself ya.