Cara setup devcontainer untuk develop Laravel app

IMG_0401.jpeg

Isnin, 15 September 2025, 10:55 pm

Kalau ikut tutorial untuk Laravel Sail ⁽¹⁾, macam tak cukup, sebab keluar permission error bila run devcontainer.

Saya juga nak setup supaya composer pun install kat dalam container supaya tak ‘kotorkan’ environment 😅:

docker pull composer

Nak run composer, guna cara ini:

docker run --rm composer

Cipta satu project Laravel baru:

mkdir project-name
cd project-name
docker run --rm -it -v $(pwd):/app composer create-project laravel/laravel .

Masih lagi dalam folder project, install Laravel Sail:

docker run --rm -it -v $(pwd):/app composer require laravel/sail --dev

Laravel Sail ni menyediakan satu docker-compose.yml dan sail command untuk run Laravel app sekali dengan component yang diperlukan seperti database, caching layer, mail server, object storage, document DB, message queue broker dll.

Lepas dah install Sail, tambah devcontainer settings untuk project tadi:

docker run --rm -it -v $(pwd):/app composer php artisan sail:install --devcontainer

Dalam prompt di atas, boleh pilih nak install sekali service apa yang diperlukan. Saya hanya perlu database & cache, jadi saya pilih mariadb & redis.

Configuration devcontainer yang datang dengan Laravel Sail ni tak berapa lengkap, dan kurang memuaskan:

  • Diorang bagi nama container untuk laravel app kepada laravel.test, saya nak guna nama app, lebih standard & proper.
  • Laravel app yang kita develop, akan run dalam container sebagai user sail. Ini yang akibatkan keluar permission error, sebab file² projek semuanya owned by root.

Oleh itu, edit file² berikut:

project-name/.devcontainer/devcontainer.json

  • service, tukar laravel.test kepada app
  • remoteUser, tukar kepada root
  • customizations > vscode > extensions, letak extension² ni:
- laravel.vscode-laravel
- mikestead.dotenv
- ryannaddy.laravel-artisan
- onecentlin.laravel5-snippets
- onecentlin.laravel-blade
- bmewburn.vscode-intelephense-client
- shufo.vscode-blade-formatter

project-name/docker-compose.yml

  • services > laravel.test, tukar kepada app
  • services > app > environment, tambah SUPERVISOR_PHP_USER: root

project-name/.env

  • tambah APP_SERVICE=app

Sekarang dah boleh buka project folder dalam VS Code > Ctrl+Shift+P > ‘Dev Containers: Reopen in Container’. VS Code akan build & run devcontainer tu. Bila run untuk pertama kali, akan ambil masa 2-3 minit untuk bina container laravel app sebab nak install banyak benda macam httpd & php dengan libraries & extensions semua.

Sebelum buka app kat browser, kena run database migration dulu. Sekarang, command composer dan artisan kena run sebagai root dalam devcontainer. Guna VS Code & buka terminal:

php artisan migrate

Sepatutnya sekarang bila devcontainer dah run & dah migrate database, dah boleh buka http://localhost dan tengok default page seperti dalam gambar di atas.

Kalau ada configuration yang nak ditukar pada file .devcontainer atau docker-compose.yml, kena rebuild balik devcontainer tu. Mula² reset habis devcontainer, run command ni di luar devcontainer:

docker compose down -v

Lepas tu, kat VS Code, Ctrl+Shift+P > ‘Dev Containers: Rebuild and Reopen in Container’.

P.s: sekarang saia tengah ikut tutorial buat login guna OIDC 🤓.

⁽¹⁾ https://laravel.com/docs/12.x/sail

Komentar (0):

FB: https://www.facebook.com/100810608155424/posts/1470367574130150/

Tulis komen: