From 64758268be316e52341b129ba3a070abd1f445e2 Mon Sep 17 00:00:00 2001 From: MAHaines Date: Mon, 14 Jul 2025 11:14:49 -0500 Subject: [PATCH] Update Docker Compose with conflict-free ports --- docker-compose-fixed.yml | 229 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 229 insertions(+) create mode 100644 docker-compose-fixed.yml diff --git a/docker-compose-fixed.yml b/docker-compose-fixed.yml new file mode 100644 index 0000000..a156e5f --- /dev/null +++ b/docker-compose-fixed.yml @@ -0,0 +1,229 @@ +version: '3.8' + +services: + # Core processing services + recorder: + build: + context: ./services/recorder + dockerfile: Dockerfile + container_name: voice-recorder + restart: unless-stopped + environment: + - DISCORD_TOKEN=${DISCORD_TOKEN} + - CLIENT_ID=${CLIENT_ID} + - GUILD_ID=${GUILD_ID} + - POSTGRES_URL=${POSTGRES_URL} + - REDIS_URL=redis://redis:6379 + volumes: + - ./data/audio/raw:/app/audio/raw + - ./data/logs:/app/logs + depends_on: + - postgres + - redis + networks: + - voice-translator + + audio-processor: + build: + context: ./services/audio-processor + dockerfile: Dockerfile + container_name: voice-audio-processor + restart: unless-stopped + environment: + - REDIS_URL=redis://redis:6379 + - POSTGRES_URL=${POSTGRES_URL} + volumes: + - ./data/audio/raw:/app/audio/raw + - ./data/audio/processed:/app/audio/processed + - ./data/logs:/app/logs + depends_on: + - redis + - postgres + networks: + - voice-translator + + whisper-service: + build: + context: ./services/whisper-service + dockerfile: Dockerfile + container_name: voice-whisper + restart: unless-stopped + runtime: nvidia + environment: + - NVIDIA_VISIBLE_DEVICES=all + - REDIS_URL=redis://redis:6379 + - POSTGRES_URL=${POSTGRES_URL} + - WHISPER_MODEL=${WHISPER_MODEL:-large-v2} + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + volumes: + - ./data/audio/processed:/app/audio/processed + - ./data/models:/app/models + - ./data/logs:/app/logs + ports: + - "8001:8000" # No conflict - available + depends_on: + - redis + - postgres + networks: + - voice-translator + + translator: + build: + context: ./services/translator + dockerfile: Dockerfile + container_name: voice-translator + restart: unless-stopped + environment: + - REDIS_URL=redis://redis:6379 + - POSTGRES_URL=${POSTGRES_URL} + - GOOGLE_TRANSLATE_API_KEY=${GOOGLE_TRANSLATE_API_KEY} + - DEEPL_API_KEY=${DEEPL_API_KEY} + - AZURE_TRANSLATOR_KEY=${AZURE_TRANSLATOR_KEY} + - AZURE_TRANSLATOR_REGION=${AZURE_TRANSLATOR_REGION} + volumes: + - ./data/logs:/app/logs + ports: + - "8002:8000" # No conflict - available + depends_on: + - redis + - postgres + networks: + - voice-translator + + transcriber: + build: + context: ./services/transcriber + dockerfile: Dockerfile + container_name: voice-transcriber + restart: unless-stopped + environment: + - DISCORD_TOKEN=${DISCORD_TOKEN} + - REDIS_URL=redis://redis:6379 + - POSTGRES_URL=${POSTGRES_URL} + - WHISPER_SERVICE_URL=http://whisper-service:8000 + - TRANSLATOR_SERVICE_URL=http://translator:8000 + volumes: + - ./data/logs:/app/logs + depends_on: + - postgres + - redis + - whisper-service + - translator + networks: + - voice-translator + + dashboard: + build: + context: ./services/dashboard + dockerfile: Dockerfile + container_name: voice-dashboard + restart: unless-stopped + environment: + - POSTGRES_URL=${POSTGRES_URL} + - REDIS_URL=redis://redis:6379 + - NODE_ENV=production + volumes: + - ./data/logs:/app/logs + ports: + - "3010:3000" # Changed from 3000 to avoid Gitea conflict + depends_on: + - postgres + - redis + networks: + - voice-translator + + # Data services + postgres: + image: postgres:15-alpine + container_name: voice-postgres + restart: unless-stopped + environment: + - POSTGRES_DB=${POSTGRES_DB:-voice_translator} + - POSTGRES_USER=${POSTGRES_USER:-postgres} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + volumes: + - ./data/database:/var/lib/postgresql/data + - ./infrastructure/database/init.sql:/docker-entrypoint-initdb.d/init.sql + ports: + - "5434:5432" # Changed from 5432 to avoid Excalidraw conflict + networks: + - voice-translator + + redis: + image: redis:7-alpine + container_name: voice-redis + restart: unless-stopped + command: redis-server --appendonly yes + volumes: + - ./data/redis:/data + - ./infrastructure/redis/redis.conf:/usr/local/etc/redis/redis.conf + ports: + - "6379:6379" # No conflict - available + networks: + - voice-translator + + # Optional management services + nginx: + image: nginx:alpine + container_name: voice-nginx + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./infrastructure/nginx/nginx.conf:/etc/nginx/nginx.conf + - ./infrastructure/nginx/ssl:/etc/nginx/ssl + depends_on: + - dashboard + networks: + - voice-translator + profiles: + - proxy + + # Optional admin interfaces + pgadmin: + image: dpage/pgadmin4:latest + container_name: voice-pgadmin + restart: unless-stopped + environment: + - PGADMIN_DEFAULT_EMAIL=${PGADMIN_EMAIL:-admin@example.com} + - PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD} + ports: + - "8085:80" # Changed from 8080 to avoid Owncast conflict + depends_on: + - postgres + networks: + - voice-translator + profiles: + - admin + + redis-commander: + image: rediscommander/redis-commander:latest + container_name: voice-redis-commander + restart: unless-stopped + environment: + - REDIS_HOSTS=local:redis:6379 + ports: + - "8086:8081" # Changed from 8081 to avoid Restreamer conflict + depends_on: + - redis + networks: + - voice-translator + profiles: + - admin + +networks: + voice-translator: + driver: bridge + +volumes: + postgres_data: + redis_data: + audio_data: + model_cache: