# ================================================================= # ZENTRALE ORCHESTRIERUNGSDATEI - ROBO-PLANET GTM STACK # FINALER STAND FÜR MIGRATION (MÄRZ 2026) - DB-FIX EDITION # ================================================================= version: '3.8' services: # --- GATEKEEPER (NGINX) --- nginx: image: nginx:alpine container_name: gateway_proxy restart: unless-stopped ports: - "8090:80" volumes: - ./nginx-proxy.conf:/etc/nginx/nginx.conf:ro - ./.htpasswd:/etc/nginx/.htpasswd:ro depends_on: - company-explorer - dashboard - connector-superoffice - b2b-assistant - market-frontend - gtm-app - transcription-app - content-app - competitor-analysis - heatmap-frontend # --- DASHBOARD --- dashboard: image: nginx:alpine container_name: dashboard restart: unless-stopped volumes: - ./dashboard:/usr/share/nginx/html:ro # --- APPS (Core) --- company-explorer: build: context: ./company-explorer dockerfile: Dockerfile container_name: company-explorer restart: unless-stopped ports: - "8000:8000" env_file: - .env environment: API_USER: "admin" API_PASSWORD: "gemini" PYTHONUNBUFFERED: "1" volumes: - ./company-explorer:/app - ./data:/data - ./Log_from_docker:/app/logs_debug connector-superoffice: build: context: ./connector-superoffice dockerfile: Dockerfile container_name: connector-superoffice restart: unless-stopped ports: - "8003:8000" env_file: - .env volumes: - ./connector-superoffice:/app - ./data:/data environment: PYTHONUNBUFFERED: "1" API_USER: "admin" API_PASSWORD: "gemini" DB_PATH: "/data/connector_queue.db" COMPANY_EXPLORER_URL: "http://company-explorer:8000" lead-engine: build: context: ./lead-engine dockerfile: Dockerfile container_name: lead-engine restart: unless-stopped ports: - "8501:8501" - "8004:8004" env_file: - .env environment: PYTHONUNBUFFERED: "1" COMPANY_EXPLORER_URL: "http://company-explorer:8000" volumes: - ./lead-engine:/app - ./company-explorer/company_explorer_connector.py:/app/company_explorer_connector.py # --- APPS (Auxiliary) --- transcription-app: build: context: ./transcription-tool dockerfile: Dockerfile container_name: transcription-app restart: unless-stopped ports: - "8001:8001" env_file: - .env volumes: - ./transcription-tool/backend:/app/backend - ./transcription-tool/frontend/dist:/app/frontend/dist - ./data/transcripts.db:/data/transcripts.db - ./uploads_audio:/app/uploads_audio environment: PYTHONUNBUFFERED: "1" DATABASE_URL: "sqlite:////data/transcripts.db" b2b-assistant: build: context: . dockerfile: dockerfiles/Dockerfile.b2b container_name: b2b-assistant restart: unless-stopped env_file: - .env volumes: - ./b2b-marketing-assistant/b2b_marketing_orchestrator.py:/app/b2b_marketing_orchestrator.py - ./market_db_manager.py:/app/market_db_manager.py - ./b2b-marketing-assistant/server.cjs:/app/server.cjs - ./data/b2b_projects.db:/data/b2b_projects.db - ./Log_from_docker:/app/Log_from_docker environment: PYTHONUNBUFFERED: "1" DB_PATH: "/data/b2b_projects.db" market-backend: build: context: . dockerfile: dockerfiles/Dockerfile.market container_name: market-backend restart: unless-stopped env_file: - .env volumes: - ./general-market-intelligence/market_intel_orchestrator.py:/app/market_intel_orchestrator.py - ./market_db_manager.py:/app/market_db_manager.py - ./config.py:/app/config.py - ./helpers.py:/app/helpers.py - ./general-market-intelligence/server.cjs:/app/general-market-intelligence/server.cjs - ./data/market_intelligence.db:/data/market_intelligence.db - ./Log:/app/Log environment: PYTHONUNBUFFERED: "1" DB_PATH: "/data/market_intelligence.db" market-frontend: build: context: ./general-market-intelligence dockerfile: Dockerfile container_name: market-frontend restart: unless-stopped depends_on: - market-backend gtm-app: build: context: . dockerfile: gtm-architect/Dockerfile container_name: gtm-app restart: unless-stopped env_file: - .env volumes: - ./gtm-architect:/app/gtm-architect - ./gtm-architect/server.cjs:/app/server.cjs - ./gtm-architect/gtm_architect_orchestrator.py:/app/gtm_architect_orchestrator.py - ./helpers.py:/app/helpers.py - ./config.py:/app/config.py - ./gtm-architect/gtm_db_manager.py:/app/gtm_db_manager.py - ./data/gtm_projects.db:/data/gtm_projects.db - ./Log_from_docker:/app/Log_from_docker environment: PYTHONUNBUFFERED: "1" DB_PATH: "/data/gtm_projects.db" content-app: build: context: . dockerfile: content-engine/Dockerfile container_name: content-app restart: unless-stopped env_file: - .env volumes: - ./content-engine:/app/content-engine - ./content-engine/server.cjs:/app/server.cjs - ./content-engine/content_orchestrator.py:/app/content_orchestrator.py - ./content-engine/content_db_manager.py:/app/content_db_manager.py - ./data/content_engine.db:/data/content_engine.db - ./helpers.py:/app/helpers.py - ./config.py:/app/config.py - ./data/gtm_projects.db:/data/gtm_projects.db - ./Log_from_docker:/app/Log_from_docker environment: PYTHONUNBUFFERED: "1" DB_PATH: "/data/content_engine.db" GTM_DB_PATH: "/data/gtm_projects.db" competitor-analysis: build: context: ./competitor-analysis-app dockerfile: Dockerfile container_name: competitor-analysis restart: unless-stopped env_file: - .env dns: - 8.8.8.8 - 8.8.4.4 volumes: - ./competitor-analysis-app/competitor_analysis_orchestrator.py:/app/competitor_analysis_orchestrator.py - ./Log_from_docker:/app/logs_debug environment: PYTHONUNBUFFERED: "1" # --- HEATMAP --- heatmap-backend: build: ./heatmap-tool/backend container_name: heatmap-backend restart: unless-stopped env_file: - .env volumes: - ./heatmap-tool/backend:/app heatmap-frontend: build: ./heatmap-tool/frontend container_name: heatmap-frontend restart: unless-stopped env_file: - .env volumes: - ./heatmap-tool/frontend:/app depends_on: - heatmap-backend # --- INFRASTRUCTURE --- duckdns: image: lscr.io/linuxserver/duckdns:latest container_name: duckdns restart: unless-stopped env_file: - .env environment: PUID: "1000" PGID: "1000" TZ: "Europe/Berlin" SUBDOMAINS: "floke,floke-ai,floke-gitea,floke-ha,floke-n8n" dns-monitor: image: alpine container_name: dns-monitor restart: unless-stopped dns: - 8.8.8.8 - 1.1.1.1 environment: SUBDOMAINS: "floke,floke-ai,floke-gitea,floke-ha,floke-n8n" TZ: "Europe/Berlin" volumes: - ./dns-monitor:/app command: "/app/monitor.sh"