refactor: migrate to native Docker Compose profiles

Simplified Docker Compose configuration by using native profiles
instead of override files, following best practices.

Changes:
- Consolidated docker-compose.yml with --profile dev/prod support
- Removed docker-compose.dev.yml and docker-compose.prod.yml
- Updated all documentation for new usage pattern
- Created comprehensive README.md and DEPLOYMENT.md
- Simplified commands: 'docker compose --profile dev up'

Environment-specific configurations:
- Development: relaxed security, hot reload, exposed ports
- Production: strict security, optimized builds, restricted access

This approach is cleaner, more maintainable, and follows Docker
Compose best practices.
This commit is contained in:
Radosław Gierwiało
2025-11-13 18:00:08 +01:00
parent bf8a9260bd
commit 3ff966defc
5 changed files with 190 additions and 167 deletions

View File

@@ -23,7 +23,8 @@ cp backend/.env.example backend/.env
3. **Start development environment**
```bash
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
docker compose --profile dev up -d
# Or simply: docker compose up (dev is default)
```
4. **Run database migrations**
@@ -80,17 +81,17 @@ Edit `backend/.env.production`:
4. **Build production images**
```bash
docker compose -f docker-compose.yml -f docker-compose.prod.yml build
docker compose --profile prod build
```
5. **Start production services**
```bash
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
docker compose --profile prod up -d
```
6. **Run migrations**
```bash
docker compose -f docker-compose.yml -f docker-compose.prod.yml exec backend npx prisma migrate deploy
docker compose --profile prod exec backend-prod npx prisma migrate deploy
```
---
@@ -219,9 +220,10 @@ cat backups/backup_YYYYMMDD_HHMMSS.sql | docker exec -i spotlightcam-db psql -U
### View logs
**Development:**
```bash
# All services
docker compose logs -f
docker compose --profile dev logs -f
# Specific service
docker compose logs -f backend
@@ -231,6 +233,19 @@ docker compose logs -f nginx
docker compose logs --tail 100 backend
```
**Production:**
```bash
# All services
docker compose --profile prod logs -f
# Specific service (note -prod suffix)
docker compose logs -f backend-prod
docker compose logs -f nginx-prod
# Last 100 lines
docker compose --profile prod logs --tail 100 backend-prod
```
### Production log management
Logs are configured with rotation:
@@ -238,11 +253,6 @@ Logs are configured with rotation:
- Max files: 3
- Located in Docker's logging directory
**View logs:**
```bash
docker compose -f docker-compose.yml -f docker-compose.prod.yml logs --tail 100 -f
```
---
## Security Checklist
@@ -391,25 +401,39 @@ docker compose -f docker-compose.yml -f docker-compose.prod.yml exec backend npx
```bash
# Start development
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
docker compose --profile dev up -d
# Or simply: docker compose up -d
# Start production
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
docker compose --profile prod up -d
# Stop all
docker compose down
# Stop all (specific profile)
docker compose --profile dev down
docker compose --profile prod down
# View logs
# View logs (development)
docker compose logs -f backend
# Shell into container
# View logs (production)
docker compose logs -f backend-prod
# Shell into container (development)
docker compose exec backend sh
# Run migrations
# Shell into container (production)
docker compose exec backend-prod sh
# Run migrations (development)
docker compose exec backend npx prisma migrate deploy
# Backup database
# Run migrations (production)
docker compose exec backend-prod npx prisma migrate deploy
# Backup database (development)
docker exec spotlightcam-db pg_dump -U spotlightcam spotlightcam > backup.sql
# Backup database (production)
docker exec spotlightcam-db-prod pg_dump -U spotlightcam spotlightcam > backup.sql
```
---