Tutorial Membuat Aplikasi PHP dengan Docker

Di tutorial Docker dan php ini kita akan belajar untuk membuat aplikasi php menggunakan Docker compose. Docker bisa digunakan untuk membuat aplikasi atau program php. Sehingga tidak perlu kawatir dengan perbedaan versi php antar komputer karena dapat ditentukan versi spesifik php yang digunakan. Video untuk tutorial ini dapat di akses di channel Youtube MyPHPtutorials di video berjudul Tutorial Docker & PHP: Membuat Aplikasi PHP Dengan Docker.

Tutorial Membuat Aplikasi PHP dengan Docker

Pada tutorial Docker & php ini kita akan belajar:

  1. Kenapa menggunakan Docker?
  2. Apa itu Docker, container & Install Docker?
  3. Membuat Docker image
  4. Menjalankan, stop, hapus container
  5. Menggunakan bind mounts
  6. Aplikasi php dengan Docker Compose

Kenapa Menggunakan Docker

Jika anda pernah menjalankan aplikasi php di server atau di komputer teman anda dan terjadi error sedangkan di komputer anda berjalan dengan baik? Bisa saja penyebabnya adalah perbedaan versi php atau perbedaan konfigurasi phpnya. Hal tersebut akan semakin sering terjadi jika teman anda menggunakan sistem operasi berbeda. Dengan Docker anda bisa membuat image yang didalam sudah ditentukan versi php-nya, konfigurasinya dan dependensi lainnya sehingga saat dijalankan di komputer lain atau server akan menberikan hasil yang sama.

Apa itu Docker, Container & Cara Install Docker

Menurut halaman dokumentasi docker

"Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly"

Dalam bahasa indonesia:

"Docker adalah plalform terbuka untuk mengembangkan, mengirim, dan menjalankan aplikasi. Docker memungkin anda untuk memisahkan aplikasi anda dari infrastruktur sehingga anda dapat mengirim aplikasi lebih cepat."

Sedangkan container menurut website docker

"A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another"

Dalam bahasa Indonesia Artinya:

"Sebuah container adalah sebuah unit standar dari aplikasi yang mengemas kode dan semua dependensinya sehingga aplikasi berjalan dengan cepat dan handal dari satu komputer ke komputer lainnya"

Untuk menginstall Docker kalian dapat mengunjungi instruksi dari website Docker untuk masing masing sistem operasi:

Membuat Docker Image

Untuk bisa menjalankan sebuah aplikasi php maka dibutuhkan sebuah Docker image. Untuk membuat Docker image dibutuhkan sebuah file dengan nama Dockerfile dan sebuah base image. Untuk base image php bisa dicari di https://hub.docker.com/. Misalkan kita akan membuat aplikasi hello world. Buatlah sebuah folder src dan di dalamnya buat file index.php sederhana seperti:

<?php
echo 'Hello world';
?>

Kemudian sejajar dengan folder src buat file Dockerfile di bawah

FROM php:8-apache

COPY src/index.php /var/www/html/

(Dokumentasi lengkap Dockerfile ada disini). Kemudian buka cmd atau terminal di mac/linux dan jalankan command di bawah.

docker build -t php-hello-world -f Dockerfile .

command di atas artinya membuat sebuah image dengan nama/tag php-hello-world. Untuk lebih jelas silahkan lihat video tutorial.

Menjalankan, Stop & Hapus Container

Setelah memiliki sebuah image maka kita akan bisa menjalankan image tersebut dalam sebuah container. Cara menjalankan Docker image, gunakan cmd atau terminal di mac/linux dan jalankan command di bawah.

docker run --name hello -p 8888:80 -d php-hello-world

kemudian buka browser anda dan akses http://localhost:8888. Untuk menghentikan container gunakan:

docker stop hello # <- dari --name di atas

untuk jalankan kembali gunakan

docker start hello

untuk melihat log dari php, misalnya terjadi error bisa dilihat dengan

docker logs -f hello

untuk menghapus container gunakan

docker rm hello

Dokumentasi lengkap Docker cli bisa dilihat di https://docs.docker.com/engine/reference/run/ atau dipenjelasan video tutorial.

Menggunakan Bind Mounts

Jika anda mengembangkan aplikasi dan mengubah kode aplikasi anda, maka anda harus membuat Docker imagenya kembali seperti di atas karena Docker image immutable. Anda bisa coba untuk mengedit index.php dan tidak akan terjadi perubahan di browser seperti dijelaskan dalam video tutorial. Untuk itu anda membutuhkan fitur "bind mounts", sederhananya adalah sharing folder komputer kalian dengan folder di dalam container. Dengan contoh aplikasi hello world di atas kita bisa gunakan command di bawah:

docker run --name hello -p 8888:80 -d -v /path/to/src:/var/www/html php-hello-world

command sebelumnya ditambahkan dengan -v /path/to/src:/var/www/html. Untuk /path/to/src adalah folder yang ada di komputer kalian. Sedangkan /var/www/html adalah folder di dalam container. Sekarang jika anda ubah kembali index.php maka perubahan Anda akan terlihat di browser.

Membuat Aplikasi PHP dengan Docker Compose

Aplikasi php cenderung tidak sesederhana hello world contoh di atas, tetapi menggunakan juga database. Kita dapat menggunakan docker compose. Docker compose adalah tool yang digunakan untuk menjalankan beberapa container sekaligus berdasarkan konfigurasi di dalam file YAML. Di bawah adalah contoh file docker-compose.yml untuk menjalankan php, mysql dan phpMyAdmin sekaligus.

version: '3'
services:
  php:
    build: .
    ports:
      - "8888:80"
    volumes:
      - ./src:/var/www/html
    depends_on:
      - database

  database:
    image: mysql:8
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: change_me
      MYSQL_DATABASE: tutorials
      MYSQL_USER: tutorials_user
      MYSQL_PASSWORD: change_me
    volumes:
      - database:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin
    ports:
      - 8080:80
    environment:
      - PMA_ARBITRARY=1
    depends_on:
      - database

volumes:
  database:

Untuk menjalankannya gunakan command di bawah

docker compose up -d

untuk stop

docker compose stop

untuk melihat log

docker compose logs -f

Di video tutorial docker & php dijelaskan lebih mendalam langkah langkah menggunakan Docker Compose.

Kesimpulan

Di tutorial Docker & php membuat aplikasi php dengan Docker ini kita telah belajar tentang kenapa mengunakan Docker, cara membuat Docker image, menjalankan container dan menghentikan container. Menggunakan bind mounts untuk sharing folder komputer ke dalam container. Kemudian menggunakan Docker Compose untuk membuat aplikasi php yang terhubung ke database dan juga ada phpMyAdmin untuk mengelola database dan tabelnya. Jika Anda memiliki pertanyaan silahkan gunakan kolom komentar di bawah. Selamat Mencoba.

“Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein.”