Initial commit for fresh VoiceInvoiceAI repo

This commit is contained in:
Hardik Sankhla
2025-06-25 23:03:48 +05:30
commit 6fe387d900
13 changed files with 1113 additions and 0 deletions

52
docker-compose.yml Normal file
View File

@@ -0,0 +1,52 @@
# docker-compose.yml
version: '3.8'
services:
# FastAPI Backend Service
backend:
build:
context: .
dockerfile: Dockerfile
ports:
- "8000:8000" # Map host port 8000 to container port 8000
environment:
# Environment variables for the FastAPI application
# These must match the variables used in backend/config.py
MINIO_ENDPOINT: minio:9000 # MinIO service name as defined below and its internal port
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
MINIO_SECURE: "False" # Set to "True" if using HTTPS for MinIO (e.g., with a reverse proxy)
MINIO_AUDIO_BUCKET: audio-inputs
MINIO_PDF_BUCKET: generated-invoices
# Set environment for model loading (e.g., development, production)
# ENVIRONMENT: "production" # Uncomment for production specific settings
depends_on:
minio:
condition: service_healthy # <--- IMPORTANT CHANGE: Wait for MinIO healthcheck to pass
volumes:
# Optional: Mount a local volume for debugging or persistent model storage
# - ./models:/app/models # If you want to pre-download models to a local dir
- ./logs:/app/logs # For application logs if you implement logging to files
# MinIO S3-Compatible Storage Service
minio:
image: minio/minio
ports:
- "9000:9000" # MinIO API port
- "9001:9001" # MinIO Console port (optional, useful for browser UI)
environment:
MINIO_ROOT_USER: minioadmin # Matches MINIO_ACCESS_KEY in backend config
MINIO_ROOT_PASSWORD: minioadmin # Matches MINIO_SECRET_KEY in backend config
command: server /data --console-address ":9001" # Start MinIO server and console
volumes:
- minio_data:/data # Persistent volume for MinIO data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 10s # Check every 10 seconds
timeout: 5s # Timeout after 5 seconds
retries: 5 # Retry 5 times before marking as unhealthy
start_period: 30s # Give MinIO 30 seconds to start up before checks begin
volumes:
minio_data: # Define the named volume for MinIO data persistence