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.
1 |
docker run php:7.0-fpm-jessie |

Run Docker php Foreground
Untuk mengeceknya, seperti biasa kita akan menggunakan command berikut.
1 |
docker ps |
Seteleh dicek hasilnya ternyata sudah jalan.

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.
1 |
docker exec -it 127 php |
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.
1 |
docker exec -it 127 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
Untuk file index.php sendiri hanya berisi command berikut.
1 2 3 |
<?php phpinfo(); |
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.
1 |
docker exec -it 8d5 php -S localhost:3000 |

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

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.
1 |
docker run -d -v $HOME/Documents/project/httpdocs:/var/www/html c321f133cd7d |
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.
1 |
docker exec -it 85a /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?
1 |
docker inspect <container id> |
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.
1 |
docker exec -it 85a php -S 172.17.0.2:3000 |

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.