All checks were successful
Deploy to Staging / Build Images (push) Successful in 33s
Deploy to Staging / Deploy to Staging (push) Successful in 22s
Deploy to Staging / Verify Staging (push) Successful in 8s
Deploy to Staging / Notify Staging Ready (push) Successful in 8s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Redis only supports debug|verbose|notice|warning -- not info or error.
The command was using ${LOG_LEVEL:-info} which resolved to INFO in
production (from workflow env), causing Redis to crash loop. Hardcode
the correct Redis-native levels (debug for dev, warning for prod) and
add available log level comments above every container's log setting.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
77 lines
2.8 KiB
YAML
77 lines
2.8 KiB
YAML
# docker-compose.prod.yml
|
|
# Production overrides for MotoVaultPro
|
|
#
|
|
# Usage:
|
|
# docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
|
#
|
|
# This file removes development-only configurations:
|
|
# - Database port exposure (PostgreSQL, Redis)
|
|
# - Development-specific settings
|
|
|
|
services:
|
|
# Traefik - Production log level and dashboard auth
|
|
mvp-traefik:
|
|
environment:
|
|
# Traefik log levels: TRACE | DEBUG | INFO | WARN | ERROR
|
|
LOG_LEVEL: error
|
|
command:
|
|
- --configFile=/etc/traefik/traefik.yml
|
|
# Traefik log levels: TRACE | DEBUG | INFO | WARN | ERROR
|
|
- --log.level=ERROR
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.motovaultpro.local`)"
|
|
- "traefik.http.routers.traefik-dashboard.tls=true"
|
|
- "traefik.http.routers.traefik-dashboard.middlewares=dashboard-auth"
|
|
- "traefik.http.services.traefik-dashboard.loadbalancer.server.port=8080"
|
|
- "traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$2y$$10$$foobar"
|
|
|
|
# Backend - Production log level
|
|
mvp-backend:
|
|
environment:
|
|
NODE_ENV: production
|
|
CONFIG_PATH: /app/config/production.yml
|
|
SECRETS_DIR: /run/secrets
|
|
# Pino log levels: trace | debug | info | warn | error | fatal
|
|
LOG_LEVEL: error
|
|
DATABASE_HOST: mvp-postgres
|
|
REDIS_HOST: mvp-redis
|
|
STRIPE_PRO_MONTHLY_PRICE_ID: prod_Toj6BG9Z9JwREl
|
|
STRIPE_PRO_YEARLY_PRICE_ID: prod_Toj8oo0RpVBQmB
|
|
STRIPE_ENTERPRISE_MONTHLY_PRICE_ID: prod_Toj8xGEui9jl6j
|
|
STRIPE_ENTERPRISE_YEARLY_PRICE_ID: prod_Toj9A7A773xrdn
|
|
|
|
# OCR - Production log level + engine config
|
|
mvp-ocr:
|
|
environment:
|
|
# Python log levels: DEBUG | INFO | WARNING | ERROR | CRITICAL
|
|
LOG_LEVEL: error
|
|
REDIS_HOST: mvp-redis
|
|
REDIS_PORT: 6379
|
|
REDIS_DB: 1
|
|
OCR_PRIMARY_ENGINE: paddleocr
|
|
OCR_FALLBACK_ENGINE: ${OCR_FALLBACK_ENGINE:-none}
|
|
OCR_FALLBACK_THRESHOLD: ${OCR_FALLBACK_THRESHOLD:-0.6}
|
|
GOOGLE_VISION_KEY_PATH: /run/secrets/google-vision-key.json
|
|
|
|
# PostgreSQL - Remove dev ports, production log level
|
|
mvp-postgres:
|
|
ports: []
|
|
environment:
|
|
POSTGRES_DB: motovaultpro
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD_FILE: /run/secrets/postgres-password
|
|
POSTGRES_INITDB_ARGS: --encoding=UTF8
|
|
LOG_LEVEL: error
|
|
# PostgreSQL log statements: none | ddl | mod | all
|
|
POSTGRES_LOG_STATEMENT: none
|
|
# Minimum query duration to log: -1 (disabled) | 0 (all) | N (ms threshold)
|
|
POSTGRES_LOG_MIN_DURATION_STATEMENT: -1
|
|
PGDATA: /var/lib/postgresql/data/pgdata
|
|
|
|
# Redis - Remove dev ports, production log level
|
|
mvp-redis:
|
|
ports: []
|
|
# Redis log levels: debug | verbose | notice | warning
|
|
command: redis-server --appendonly yes --loglevel warning
|