Halo, kalau kamu merasa tulisan saya ngebantu kamu, kamu bisa ucapkan terima kasih lewat saweria .

Hello, if you find this article helpful, you can express your gratitude through saweria .



How To

New Laravel Project

  1. Buat 1 buah project Laravel baru composer create-project laravel/laravel octane-docker

  2. Pindah ke direktori octane-docker cd octane-docker

  3. Install Laravel Octane composer require laravel/octane lalu php artisan octane:install. Saya pilih RoadRunner sebagai runtime Octane karena itu yang paling familiar/banyak tutorialnya

  4. Clone repo Laravel Octane Dockerfile di direktori octane-docker

git clone --depth 1 git@github.com:exaco/laravel-octane-dockerfile.git
  1. Copy folder dan file yang dibutuhkan
cp -rv laravel-octane-dockerfile/deployment 
cp -rv laravel-octane-dockerfile/RoadRunner.Dockerfile .
cp -rv laravel-octane-dockerfile/.dockerignore .
  1. Buat image dengan docker build -t laravel-test:octane -f RoadRunner.Dockerfile . (ini makan waktu sangat lama…)

  2. Running image dengan docker run -p 8000:8000 --rm docker.io/library/laravel-test:octane

Laravel Octane Docker Image Running Successfully

Laravel Octane Docker Image Running Successfully


Existing Laravel Project

Cara nya sama dengan setup di new laravel project

  1. Copy folder dan file yang dibutuhkan ke existing project
cp -rv laravel-octane-dockerfile/deployment 
cp -rv laravel-octane-dockerfile/RoadRunner.Dockerfile .
cp -rv laravel-octane-dockerfile/.dockerignore .
  1. Buat image dengan docker build -t laravel-test:octane -f RoadRunner.Dockerfile .

Catatan:

  1. Jika kamu mengalami error saat build image, ubah file Dockerfile sesuai dengan kebutuhan (di kasus saya, saya harus hapus --audit saat composer install

Simple Benchmark Docker vs Non Docker Laravel Octane App

Menggunakan php artisan serve

Menggunakan php artisan serve

Menggunakan Octane Tanpa Docker/Native

Menggunakan Octane Tanpa Docker/Native

Menggunakan Dockerize Octane

Menggunakan Dockerize Octane

Bisa dilihat bahwa Laravel Octane tanpa docker bisa lebih banyak menerima request per-detiknya dengan kecepatan transfer yg lebih cepat juga.

Kalau kalian deploy di Cluster Kubernetes, sudah pasti harus menggunakan Dockerize version, tapi kalau kalian tidak menggunakan Kubernetes, kalian bisa deploy menggunakan supervisor + nginx (native). Sesuaikan saja dengan kebutuhan