109 lines
3.1 KiB
Markdown
109 lines
3.1 KiB
Markdown
# 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 (`:Z` volume flags)
|
|
- Standard MySQL image (instead of mysql-server)
|
|
- Frontend container (Node.js development server)
|
|
|
|
## Quick Start
|
|
|
|
Use the automated setup script from the project root:
|
|
|
|
```bash
|
|
./bin/start-dev
|
|
```
|
|
|
|
This script will:
|
|
1. Create `.env` if it doesn't exist
|
|
2. Install backend dependencies (composer)
|
|
3. Start all containers (backend, MySQL, frontend)
|
|
4. Run database migrations
|
|
5. Optionally seed the database
|
|
|
|
## Manual Usage
|
|
|
|
### Start all services
|
|
|
|
```bash
|
|
docker compose -f .docker/development/docker-compose.yml \
|
|
-f .docker/development/docker-compose.override.yml \
|
|
up -d
|
|
```
|
|
|
|
### View logs
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
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 settings
|
|
- `FORWARD_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 install` and `npm run dev` on startup
|
|
- Laravel Sail handles PHP-FPM, supervisor, and other backend services
|
|
- Hot reload is enabled for both frontend (Vite HMR) and backend (file watchers)
|