Add standalone GeminiEngine class for maintenance schedule extraction from PDF owners manuals using Vertex AI Gemini 2.5 Flash with structured JSON output enforcement, 20MB size limit, and lazy initialization. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
84 lines
3.1 KiB
YAML
84 lines
3.1 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 engine configuration (Google Vision primary, PaddleOCR fallback)
|
|
OCR_PRIMARY_ENGINE: google_vision
|
|
OCR_FALLBACK_ENGINE: paddleocr
|
|
OCR_CONFIDENCE_THRESHOLD: "0.6"
|
|
OCR_FALLBACK_THRESHOLD: "0.6"
|
|
GOOGLE_VISION_KEY_PATH: /run/secrets/google-wif-config.json
|
|
VISION_MONTHLY_LIMIT: "1000"
|
|
# Vertex AI / Gemini configuration (maintenance schedule extraction)
|
|
VERTEX_AI_PROJECT: ${VERTEX_AI_PROJECT:-}
|
|
VERTEX_AI_LOCATION: us-central1
|
|
GEMINI_MODEL: gemini-2.5-flash
|
|
|
|
# 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
|