Cara setup devcontainer untuk develop Laravel app

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 #Docker 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 namaapp
, 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
, tukarlaravel.test
kepadaapp
remoteUser
, tukar kepadaroot
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 kepadaapp
services
>app
>environment
, tambahSUPERVISOR_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
Fry pan hay hasil masak guna induction cooker
20 September 2025
14 September 2025