sbdh11/fraudwatch
0
1name: fraud-detection2 3services:4 db:5 image: postgres:16-alpine6 environment:7 POSTGRES_USER: ${DB_USER:-app}8 POSTGRES_PASSWORD: ${DB_PASSWORD:-app}9 POSTGRES_DB: ${DB_NAME:-frauddetect}10 volumes:11 - pgdata:/var/lib/postgresql/data12 healthcheck:13 test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-app} -d ${DB_NAME:-frauddetect}"]14 interval: 5s15 timeout: 5s16 retries: 2017 ports:18 - "${DB_PORT:-5544}:5432"19 20 mlflow:21 image: ghcr.io/mlflow/mlflow:v2.16.222 command: >23 mlflow server24 --host 0.0.0.0 --port 500025 --backend-store-uri sqlite:////mlruns/mlflow.db26 --default-artifact-root /mlruns/artifacts27 volumes:28 - mlruns:/mlruns29 healthcheck:30 test: ["CMD-SHELL", "python -c \"import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://localhost:5000/health').status==200 else 1)\""]31 interval: 10s32 timeout: 5s33 retries: 2034 start_period: 20s35 ports:36 - "${MLFLOW_PORT:-5500}:5000"37 38 backend:39 build: ./backend40 environment:41 DATABASE_URL: postgresql+asyncpg://${DB_USER:-app}:${DB_PASSWORD:-app}@db:5432/${DB_NAME:-frauddetect}42 MLFLOW_TRACKING_URI: http://mlflow:500043 MLFLOW_EXPERIMENT: fraud-detection44 SIM_ENABLED: "true"45 SIM_INTERVAL_SECONDS: "1.5"46 TRAIN_ON_STARTUP: "true"47 TRAIN_ROWS: "30000"48 CORS_ORIGINS: "*"49 depends_on:50 db:51 condition: service_healthy52 mlflow:53 condition: service_started54 volumes:55 - artifacts:/app/app/ml/artifacts56 ports:57 - "${BACKEND_PORT:-8008}:8000"58 59 frontend:60 build:61 context: ./frontend62 args:63 NEXT_PUBLIC_API_BASE: "http://localhost:${BACKEND_PORT:-8008}/api"64 environment:65 NEXT_PUBLIC_API_BASE: "http://localhost:${BACKEND_PORT:-8008}/api"66 depends_on:67 - backend68 ports:69 - "${FRONTEND_PORT:-3030}:3000"70 71volumes:72 pgdata:73 mlruns:74 artifacts:75 