3.1 KiB
3.1 KiB
Development Docker Setup
This directory contains Docker Compose files for local development using Laravel Sail.
Files
- docker-compose.yml - Base Sail configuration for backend (Laravel) and MySQL
- docker-compose.override.yml - Development overrides:
- Podman/SELinux compatibility (
:Zvolume flags) - Standard MySQL image (instead of mysql-server)
- Frontend container (Node.js development server)
- Podman/SELinux compatibility (
Quick Start
Use the automated setup script from the project root:
./bin/start-dev
This script will:
- Create
.envif it doesn't exist - Install backend dependencies (composer)
- Start all containers (backend, MySQL, frontend)
- Run database migrations
- Optionally seed the database
Manual Usage
Start all services
docker compose -f .docker/development/docker-compose.yml \
-f .docker/development/docker-compose.override.yml \
up -d
View logs
# All services
docker compose -f .docker/development/docker-compose.yml \
-f .docker/development/docker-compose.override.yml \
logs -f
# Specific service
docker compose -f .docker/development/docker-compose.yml \
-f .docker/development/docker-compose.override.yml \
logs -f frontend
Run backend commands
# Run migrations
docker compose -f .docker/development/docker-compose.yml \
-f .docker/development/docker-compose.override.yml \
exec backend php artisan migrate
# Run tinker
docker compose -f .docker/development/docker-compose.yml \
-f .docker/development/docker-compose.override.yml \
exec backend php artisan tinker
# Run tests
docker compose -f .docker/development/docker-compose.yml \
-f .docker/development/docker-compose.override.yml \
exec backend php artisan test
Stop all services
docker compose -f .docker/development/docker-compose.yml \
-f .docker/development/docker-compose.override.yml \
down
Services
| Service | Port | Description |
|---|---|---|
| backend | 8000 | Laravel API (PHP 8.4 + Sail) |
| mysql | 3306 | MySQL 8.0 database |
| frontend | 5173 | Vite dev server (React Router) |
Environment Variables
The backend reads from backend/.env. Key variables:
APP_PORT- Backend port (default: 80, set to 8000 for Podman)DB_*- Database connection settingsFORWARD_DB_PORT- Exposed MySQL port (default: 3306)
Volume Mounts
backend/→/var/www/html(backend container)frontend/→/app(frontend container)- MySQL data persists in named volume
sail-mysql
Podman Compatibility
The :Z flag on volumes enables SELinux compatibility for Podman users. This is automatically included in the override file.
Notes
- The frontend container automatically runs
npm installandnpm run devon startup - Laravel Sail handles PHP-FPM, supervisor, and other backend services
- Hot reload is enabled for both frontend (Vite HMR) and backend (file watchers)