π³ Build a simple laravel development environment with Docker Compose.
Makefile
1,199
143 commits
updated Aug 25, 2026
Build a simple laravel development environment with Docker Compose. Support with Windows(WSL2), macOS(Intel and Apple Silicon) and Linux.
The Dockerfile uses here-documents (RUN <<EOF), which require BuildKit. When BuildKit is disabled (e.g. an old Docker version or the legacy builder), the RUN instructions are silently skipped, so required packages such as git are never installed. The build still succeeds, but composer install later fails with git was not found in your PATH.
BuildKit is enabled by default on Docker Engine v23.0+ and Docker Desktop. If you must use an older Docker, enable it explicitly before building:
export DOCKER_BUILDKIT=1
export COMPOSE_DOCKER_CLI_BUILD=1
$ task create-project
# or...
$ make create-project
# or... Linux environment
$ echo "UID=$(id -u)" >> .env
$ echo "GID=$(id -g)" >> .env
$ echo "USERNAME=$(whoami)" >> .env
$ mkdir -p src
$ docker compose build
$ docker compose --file compose.yaml --file compose-for-linux.yaml up --detach
$ docker compose exec app composer create-project --prefer-dist laravel/laravel .
$ docker compose exec app cp .env.example .env
$ docker compose exec app sed -i 's/DB_CONNECTION=.*/DB_CONNECTION=mysql/' .env
$ docker compose exec app php artisan key:generate
$ docker compose exec app php artisan storage:link
$ docker compose exec app chmod -R 777 storage bootstrap/cache
$ docker compose exec app php artisan migrate
$ task install
# or...
$ make install
# or... Linux environment
$ echo "UID=$(id -u)" >> .env
$ echo "GID=$(id -g)" >> .env
$ echo "USERNAME=$(whoami)" >> .env
$ docker compose build
$ docker compose --file compose.yaml --file compose-for-linux.yaml up --detach
$ docker compose exec app composer install
$ docker compose exec app cp .env.example .env
$ docker compose exec app sed -i 's/DB_CONNECTION=.*/DB_CONNECTION=mysql/' .env
$ docker compose exec app php artisan key:generate
$ docker compose exec app php artisan storage:link
$ docker compose exec app chmod -R 777 storage bootstrap/cache
βββ app
βββ web
βββ db
311 followers Β· starred May 2021
14 followers Β· starred Nov 2020
50 followers Β· starred Oct 2021
17 followers Β· starred Sep 2021
π³ Build a simple laravel development environment with Docker Compose.
Makefile
1,199
143 commits
updated Aug 25, 2026
Build a simple laravel development environment with Docker Compose. Support with Windows(WSL2), macOS(Intel and Apple Silicon) and Linux.
The Dockerfile uses here-documents (RUN <<EOF), which require BuildKit. When BuildKit is disabled (e.g. an old Docker version or the legacy builder), the RUN instructions are silently skipped, so required packages such as git are never installed. The build still succeeds, but composer install later fails with git was not found in your PATH.
BuildKit is enabled by default on Docker Engine v23.0+ and Docker Desktop. If you must use an older Docker, enable it explicitly before building:
export DOCKER_BUILDKIT=1
export COMPOSE_DOCKER_CLI_BUILD=1
$ task create-project
# or...
$ make create-project
# or... Linux environment
$ echo "UID=$(id -u)" >> .env
$ echo "GID=$(id -g)" >> .env
$ echo "USERNAME=$(whoami)" >> .env
$ mkdir -p src
$ docker compose build
$ docker compose --file compose.yaml --file compose-for-linux.yaml up --detach
$ docker compose exec app composer create-project --prefer-dist laravel/laravel .
$ docker compose exec app cp .env.example .env
$ docker compose exec app sed -i 's/DB_CONNECTION=.*/DB_CONNECTION=mysql/' .env
$ docker compose exec app php artisan key:generate
$ docker compose exec app php artisan storage:link
$ docker compose exec app chmod -R 777 storage bootstrap/cache
$ docker compose exec app php artisan migrate
$ task install
# or...
$ make install
# or... Linux environment
$ echo "UID=$(id -u)" >> .env
$ echo "GID=$(id -g)" >> .env
$ echo "USERNAME=$(whoami)" >> .env
$ docker compose build
$ docker compose --file compose.yaml --file compose-for-linux.yaml up --detach
$ docker compose exec app composer install
$ docker compose exec app cp .env.example .env
$ docker compose exec app sed -i 's/DB_CONNECTION=.*/DB_CONNECTION=mysql/' .env
$ docker compose exec app php artisan key:generate
$ docker compose exec app php artisan storage:link
$ docker compose exec app chmod -R 777 storage bootstrap/cache
βββ app
βββ web
βββ db
311 followers Β· starred May 2021
14 followers Β· starred Nov 2020
50 followers Β· starred Oct 2021
17 followers Β· starred Sep 2021