54 lines
1.6 KiB
YAML
54 lines
1.6 KiB
YAML
# Sample Docker Compose for TT Booking
|
|
# Copy this file and create a .env file with your settings
|
|
|
|
services:
|
|
tt-booking:
|
|
image: your-registry/tt-booking:latest
|
|
container_name: tt-booking
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
- NEXTAUTH_URL=http://localhost:3000
|
|
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
|
|
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@tabletennis.com}
|
|
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin123}
|
|
# Optional email settings
|
|
- EMAIL_USER=${EMAIL_USER}
|
|
- EMAIL_PASSWORD=${EMAIL_PASSWORD}
|
|
# Optional rate limiting
|
|
- RATE_LIMIT_MAX=${RATE_LIMIT_MAX:-100}
|
|
- RATE_LIMIT_WINDOW=${RATE_LIMIT_WINDOW:-900000}
|
|
volumes:
|
|
- ./data:/app/data
|
|
- ./backups:/app/backups
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
# Optional: Automated backup service
|
|
backup:
|
|
image: alpine:latest
|
|
container_name: tt-booking-backup
|
|
volumes:
|
|
- ./data:/data:ro
|
|
- ./backups:/backups
|
|
environment:
|
|
- TZ=UTC
|
|
command: >
|
|
sh -c "
|
|
apk add --no-cache tzdata &&
|
|
while true; do
|
|
timestamp=$$(date +%Y%m%d-%H%M%S)
|
|
echo \"Creating backup at $$timestamp\"
|
|
cp /data/sqlite.db \"/backups/sqlite-$$timestamp.db\" 2>/dev/null || echo 'No database file found yet'
|
|
# Keep backups for 7 days
|
|
find /backups -name 'sqlite-*.db' -mtime +7 -delete 2>/dev/null || true
|
|
echo \"Backup completed, sleeping for 24 hours\"
|
|
sleep 86400
|
|
done"
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- tt-booking |