production configs, deployment configs and readme
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
tt-booking:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: lcc-tt-booking
|
||||
ports:
|
||||
- '3000:3000'
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- DATABASE_URL=/app/data/sqlite.db
|
||||
- NEXTAUTH_URL=https://lcc-tt-booking.mikicvi.com
|
||||
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
|
||||
- EMAIL_USER=${EMAIL_USER}
|
||||
- EMAIL_PASSWORD=${EMAIL_PASSWORD}
|
||||
- ADMIN_EMAIL=${ADMIN_EMAIL}
|
||||
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
|
||||
- PORT=3000
|
||||
- RATE_LIMIT_MAX=${RATE_LIMIT_MAX:-100}
|
||||
- RATE_LIMIT_WINDOW=${RATE_LIMIT_WINDOW:-900000}
|
||||
- LOG_LEVEL=${LOG_LEVEL:-info}
|
||||
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
|
||||
start_period: 60s
|
||||
networks:
|
||||
- lcc-network
|
||||
|
||||
# Automated backup service
|
||||
backup:
|
||||
image: alpine:latest
|
||||
container_name: lcc-backup
|
||||
volumes:
|
||||
- ./data:/data:ro
|
||||
- ./backups:/backups
|
||||
environment:
|
||||
- TZ=Europe/Dublin
|
||||
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 30 days
|
||||
find /backups -name 'sqlite-*.db' -mtime +30 -delete 2>/dev/null || true
|
||||
echo \"Backup completed, sleeping for 24 hours\"
|
||||
sleep 86400
|
||||
done"
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- tt-booking
|
||||
networks:
|
||||
- lcc-network
|
||||
|
||||
# Log rotation service
|
||||
logrotate:
|
||||
image: alpine:latest
|
||||
container_name: lcc-logrotate
|
||||
volumes:
|
||||
- ./logs:/logs
|
||||
command: >
|
||||
sh -c "
|
||||
apk add --no-cache logrotate &&
|
||||
echo '/logs/*.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 30
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
}' > /etc/logrotate.d/app &&
|
||||
while true; do
|
||||
logrotate /etc/logrotate.d/app
|
||||
sleep 86400
|
||||
done"
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- lcc-network
|
||||
|
||||
networks:
|
||||
lcc-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
lcc-data:
|
||||
driver: local
|
||||
lcc-backups:
|
||||
driver: local
|
||||
Reference in New Issue
Block a user