This is a Docker-based template for Laravel 12, built with:
- PHP 8.4 (FPM on Alpine)
- PostgreSQL 16
- Redis (Alpine)
- Node.js 22 + NPM
- Supervisor for Queue & Scheduler
- Makefile for easy commands (like Laravel Sail)
- Nginx
- Composer
- XDebug in Dev Mode
And useful libraries:
composer create-project m1n64/laravel-12-docker-startup laravel-12-docker
cd laravel-12-dockercp .env.example .env- Open
.envfile and change it:
DB_DATABASE=<your-db> # Change DB name-
Change the container name prefix:
Inside
docker-compose.yml, renamel12-to your project name:
services:
app:
container_name: myproject-app
nginx:
container_name: myproject-nginx
postgres:
container_name: myproject-postgres
redis:
container_name: myproject-redis-
Change the Docker network
In
docker-compose.yml:
networks:
myproject-network:docker-compose up -dmake up # For development
make prod # For productionRun inside the container:
docker-compose exec -u www-data app composer installOr using Makefile:
make composer installmake npm install
make npm run dev # Run Vite for developmentmake artisan key:generatemake artisan migratemake artisan storage:link| Action | Docker Command | Makefile Shortcut |
|---|---|---|
Run php artisan |
docker-compose exec -u www-data app php artisan <cmd> |
make artisan <cmd> |
Run composer |
docker-compose exec -u www-data app composer <cmd> |
make composer <cmd> |
Run npm |
docker-compose exec -u www-data app npm <cmd> |
make npm <cmd> |
| Open Bash | docker-compose exec -u www-data app bash |
make bash |
| View Logs | docker-compose logs -f app |
make logs app |
| Open PostgreSQL CLI | docker-compose exec -e PGPASSWORD=<pass> postgres psql -U <user> -d <db> |
make psql |
| Open Redis CLI | docker-compose exec redis redis-cli |
make redis |
| Run Tests | docker-compose exec -u www-data app php artisan test |
make test |
| Action | Docker Command | Makefile Shortcut |
|---|---|---|
| Restart all | docker-compose restart |
make restart |
| Restart one | docker-compose restart <service> |
make restart-container CONTAINER=<name> |
| Stop all | docker-compose stop |
make stop |
| Stop one | docker-compose stop <service> |
make stop-container CONTAINER=<name> |
| Start all | docker-compose up -d |
make up |
| Remove all | docker-compose down -v |
make down |
For list of all makefile commands, run make help.
make testor,
docker-compose exec -u www-data app php artisan test- This setup supports Laravel Queues & Scheduler via Supervisor.
- PostgreSQL, Redis & Supervisor are configured out of the box.
- Uses Node.js 22 for Vite & frontend dependencies.
- All Docker volumes persist data between container restarts.
Use Makefile commands just like Laravel Sail, and enjoy seamless Docker development! π








