# VoiceForge Development Docker Compose # Runs all services locally for development version: '3.8' services: # PostgreSQL Database db: image: postgres:15-alpine container_name: voiceforge-db environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: voiceforge volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: [ "CMD-SHELL", "pg_isready -U postgres" ] interval: 10s timeout: 5s retries: 5 # Redis Cache redis: image: redis:7-alpine container_name: voiceforge-redis ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 10s timeout: 5s retries: 5 # FastAPI Backend backend: build: context: ../../backend dockerfile: ../deploy/docker/Dockerfile.backend container_name: voiceforge-backend environment: - DATABASE_URL=postgresql://postgres:postgres@db:5432/voiceforge - REDIS_URL=redis://redis:6379/0 - GOOGLE_APPLICATION_CREDENTIALS=/app/credentials/google-cloud-key.json - DEBUG=true - API_HOST=0.0.0.0 - API_PORT=8000 volumes: - ../../backend/app:/app/app # Hot reload - ../../credentials:/app/credentials:ro # Google Cloud credentials - uploads_data:/app/uploads ports: - "8000:8000" depends_on: db: condition: service_healthy redis: condition: service_healthy command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload # Celery Worker (for async tasks) worker: build: context: ../../backend dockerfile: ../deploy/docker/Dockerfile.backend container_name: voiceforge-worker environment: - DATABASE_URL=postgresql://postgres:postgres@db:5432/voiceforge - REDIS_URL=redis://redis:6379/0 - GOOGLE_APPLICATION_CREDENTIALS=/app/credentials/google-cloud-key.json volumes: - ../../backend/app:/app/app - ../../credentials:/app/credentials:ro - uploads_data:/app/uploads depends_on: db: condition: service_healthy redis: condition: service_healthy command: celery -A app.workers.celery_app worker --loglevel=info # Streamlit Frontend frontend: build: context: ../../frontend dockerfile: ../deploy/docker/Dockerfile.frontend container_name: voiceforge-frontend environment: - API_BASE_URL=http://backend:8000 volumes: - ../../frontend:/app # Hot reload ports: - "8501:8501" depends_on: - backend volumes: postgres_data: redis_data: uploads_data: networks: default: name: voiceforge-network