ucan-lab
docker-laravel
Makefile

🐳 Build a simple laravel development environment with Docker Compose.

Last updated Jul 9, 2026
1.2k
Stars
368
Forks
3
Issues
0
Stars/day
Attention Score
93
Language breakdown
No language data available.
Files click to expand
README

docker-laravel 🐳

docker-laravel

Test laravel-create-project.yml Test laravel-git-clone.yml License

Introduction

Build a simple laravel development environment with Docker Compose. Support with Windows(WSL2), macOS(Intel and Apple Silicon) and Linux.

Requirements

  • Docker Engine v23.0+ (BuildKit enabled by default) or the latest Docker Desktop
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 COMPOSEDOCKERCLI_BUILD=1

Usage

Create an initial Laravel project

$ 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/DBCONNECTION=.*/DBCONNECTION=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

http://localhost

Create an existing Laravel project

  • Git clone & change directory
  • Execute the following command
$ 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/DBCONNECTION=.*/DBCONNECTION=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

http://localhost

Tips

Container structures

├── app
├── web
└── db

app container

  • Base image
- php:8.4-fpm-bullseye - composer:2.10

web container

  • Base image
- nginx:1.31

db container

  • Base image
- mysql:9.7

mailpit container

  • Base image
- axllent/mailpit
🔗 More in this category

© 2026 GitRepoTrend · ucan-lab/docker-laravel · Updated daily from GitHub