99 lines
2.4 KiB
YAML
99 lines
2.4 KiB
YAML
# Production Docker Compose
|
|
services:
|
|
app:
|
|
image: codeberg.org/lvl0/buckets:latest
|
|
container_name: buckets_app
|
|
restart: always
|
|
ports:
|
|
- "8000:8000"
|
|
environment:
|
|
# Required from user
|
|
APP_KEY: "${APP_KEY}" # Critical - must persist across deployments
|
|
APP_URL: "${APP_URL}"
|
|
DB_DATABASE: "${DB_DATABASE}"
|
|
DB_USERNAME: "${DB_USERNAME}"
|
|
DB_PASSWORD: "${DB_PASSWORD}"
|
|
|
|
# Optional email configuration
|
|
MAIL_HOST: "${MAIL_HOST:-}"
|
|
MAIL_PORT: "${MAIL_PORT:-587}"
|
|
MAIL_USERNAME: "${MAIL_USERNAME:-}"
|
|
MAIL_PASSWORD: "${MAIL_PASSWORD:-}"
|
|
MAIL_FROM_ADDRESS: "${MAIL_FROM_ADDRESS:-noreply@example.com}"
|
|
volumes:
|
|
# Only persist storage in production
|
|
- app_storage:/app/storage
|
|
- app_logs:/app/storage/logs
|
|
depends_on:
|
|
- db
|
|
networks:
|
|
- buckets
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8000/up"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
db:
|
|
image: mariadb:11
|
|
container_name: buckets_db
|
|
restart: always
|
|
environment:
|
|
MYSQL_DATABASE: "${DB_DATABASE}"
|
|
MYSQL_USER: "${DB_USERNAME}"
|
|
MYSQL_PASSWORD: "${DB_PASSWORD}"
|
|
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
|
|
volumes:
|
|
- db_data:/var/lib/mysql
|
|
networks:
|
|
- buckets
|
|
|
|
# Optional: Redis for production caching/sessions
|
|
# redis:
|
|
# image: redis:7-alpine
|
|
# container_name: buckets_redis
|
|
# restart: always
|
|
# command: redis-server --requirepass ${REDIS_PASSWORD}
|
|
# volumes:
|
|
# - redis_data:/data
|
|
# networks:
|
|
# - buckets
|
|
# healthcheck:
|
|
# test: ["CMD", "redis-cli", "ping"]
|
|
# interval: 30s
|
|
# timeout: 10s
|
|
# retries: 3
|
|
|
|
# Optional: Backup service
|
|
# backup:
|
|
# image: mariadb:11
|
|
# container_name: buckets_backup
|
|
# restart: always
|
|
# environment:
|
|
# MYSQL_HOST: db
|
|
# MYSQL_USER: root
|
|
# MYSQL_PASSWORD: "${DB_ROOT_PASSWORD}"
|
|
# volumes:
|
|
# - ./database/backups:/backups
|
|
# - ./scripts/backup.sh:/backup.sh:ro
|
|
# entrypoint: ["/bin/sh"]
|
|
# command: ["-c", "while true; do /backup.sh; sleep 86400; done"]
|
|
# depends_on:
|
|
# - db
|
|
# networks:
|
|
# - buckets
|
|
|
|
networks:
|
|
buckets:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
db_data:
|
|
driver: local
|
|
app_storage:
|
|
driver: local
|
|
app_logs:
|
|
driver: local
|
|
# redis_data:
|
|
# driver: local
|