# WICHTIGER HINWEIS: Diese Version konzentriert sich auf den stabilen Core-Stack. # Alle nicht essenziellen Dienste sind auskommentiert, um Build-Fehler zu vermeiden. version: '3.8' services: # --- GATEKEEPER (NGINX) --- nginx: image: nginx:alpine container_name: gateway_proxy restart: unless-stopped ports: - "8090:80" volumes: - ./nginx-proxy-clean.conf:/etc/nginx/nginx.conf:ro - ./.htpasswd:/etc/nginx/.htpasswd:ro depends_on: dashboard: condition: service_started company-explorer: condition: service_healthy # connector-superoffice: # condition: service_healthy # lead-engine: # condition: service_started # gtm-architect: # condition: service_started # b2b-marketing-assistant: # condition: service_started transcription-tool: condition: service_started # heatmap-frontend: # condition: service_started # competitor-analysis: # condition: service_started # content-engine: # condition: service_started # market-intelligence: # condition: service_started fotograf-de-scraper-frontend: condition: service_started # --- DASHBOARD --- dashboard: image: nginx:alpine container_name: dashboard restart: unless-stopped volumes: - ./dashboard:/usr/share/nginx/html:ro # --- APPS --- # market-intelligence: # build: # context: . # dockerfile: general-market-intelligence/Dockerfile.fullstack # container_name: market-intelligence # restart: unless-stopped # ports: # - "8098:3001" # environment: # GEMINI_API_KEY: "${GEMINI_API_KEY}" # SERP_API_KEY: "${SERP_API}" # PYTHONUNBUFFERED: "1" # volumes: # - market_intel_data:/data # - ./Log_from_docker:/app/Log # content-engine: # build: # context: . # dockerfile: content-engine/Dockerfile # container_name: content-engine # restart: unless-stopped # ports: # - "8093:3000" # environment: # GEMINI_API_KEY: "${GEMINI_API_KEY}" # PYTHONUNBUFFERED: "1" # GTM_DB_PATH: "/gtm_data/gtm_projects.db" # CONTENT_DB_PATH: "/data/content_engine.db" # volumes: # - content_engine_data:/data # - gtm_architect_data:/gtm_data:ro # - ./Log_from_docker:/app/logs_debug # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:3006"] # interval: 10s # timeout: 5s # retries: 5 # start_period: 30s # competitor-analysis: # build: # context: ./competitor-analysis-app # dockerfile: Dockerfile # container_name: competitor-analysis # restart: unless-stopped # ports: # - "8097:3000" # environment: # GEMINI_API_KEY: "${GEMINI_API_KEY}" # PYTHONUNBUFFERED: "1" # volumes: # - competitor_analysis_data:/data # - ./Log_from_docker:/app/logs_debug transcription-tool: build: context: ./transcription-tool dockerfile: Dockerfile container_name: transcription-tool restart: unless-stopped ports: - "8001:8001" environment: GEMINI_API_KEY: "${GEMINI_API_KEY}" UPLOAD_DIR: "/app/uploads" volumes: - transcription_uploads:/app/uploads - ./Log_from_docker:/app/logs_debug # heatmap-backend: # build: # context: ./heatmap-tool/backend # container_name: heatmap-backend # restart: unless-stopped # ports: # - "8002:8000" # environment: # ORS_API_KEY: "${ORS_API_KEY}" # PYTHONUNBUFFERED: "1" # heatmap-frontend: # build: # context: ./heatmap-tool/frontend # dockerfile: Dockerfile # container_name: heatmap-frontend # restart: unless-stopped # ports: # - "8096:80" # depends_on: # - heatmap-backend # b2b-marketing-assistant: # build: # context: . # dockerfile: b2b-marketing-assistant/Dockerfile # container_name: b2b-marketing-assistant # restart: unless-stopped # ports: # - "8092:3002" # environment: # GEMINI_API_KEY: "${GEMINI_API_KEY}" # PYTHONUNBUFFERED: "1" # volumes: # - b2b_marketing_data:/data # - ./Log_from_docker:/app/logs_debug # gtm-architect: # build: # context: . # dockerfile: gtm-architect/Dockerfile # container_name: gtm-architect # restart: unless-stopped # ports: # - "8094:80" # environment: # GEMINI_API_KEY: "${GEMINI_API_KEY}" # VITE_API_BASE_URL: "/gtm/api" # GTM_DB_PATH: "/data/gtm_projects.db" # volumes: # - ./Log_from_docker:/app/logs_debug # - gtm_architect_data:/data company-explorer: build: context: ./company-explorer dockerfile: Dockerfile container_name: company-explorer restart: unless-stopped ports: - "8000:8000" environment: API_USER: "admin" API_PASSWORD: "gemini" PYTHONUNBUFFERED: "1" DATABASE_URL: "sqlite:////data/companies_v3_fixed_2.db" GEMINI_API_KEY: "${GEMINI_API_KEY}" SERP_API_KEY: "${SERP_API}" NOTION_TOKEN: "${NOTION_API_KEY}" volumes: - ./company-explorer:/app - ./company-explorer/data:/data # Local bind mount for guaranteed persistence - ./Log_from_docker:/app/logs_debug healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/docs"] interval: 10s timeout: 5s retries: 5 start_period: 30s # connector-superoffice: # build: # context: ./connector-superoffice # dockerfile: Dockerfile # container_name: connector-superoffice # restart: unless-stopped # ports: # - "8003:8000" # volumes: # - ./connector-superoffice:/app # - ./connector-superoffice/data:/data # Persistent local DB storage # environment: # PYTHONUNBUFFERED: "1" # GEMINI_API_KEY: "${GEMINI_API_KEY}" # SO_CLIENT_ID: "${SO_CLIENT_ID}" # SO_CLIENT_SECRET: "${SO_CLIENT_SECRET}" # SO_REFRESH_TOKEN: "${SO_REFRESH_TOKEN}" # SO_ENVIRONMENT: "${SO_ENVIRONMENT}" # SO_CONTEXT_IDENTIFIER: "${SO_CONTEXT_IDENTIFIER}" # WEBHOOK_TOKEN: "${WEBHOOK_TOKEN}" # WEBHOOK_SECRET: "${WEBHOOK_SECRET}" # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:8000/health"] # interval: 10s # timeout: 5s # retries: 5 # start_period: 30s # lead-engine: # build: # context: ./lead-engine # dockerfile: Dockerfile # container_name: lead-engine # restart: unless-stopped # ports: # - "8501:8501" # UI (Streamlit) # - "8004:8004" # API / Monitor # - "8099:8004" # Direct Test Port # environment: # PYTHONUNBUFFERED: "1" # GEMINI_API_KEY: "${GEMINI_API_KEY}" # SERP_API: "${SERP_API}" # INFO_Application_ID: "${INFO_Application_ID}" # INFO_Tenant_ID: "${INFO_Tenant_ID}" # INFO_Secret: "${INFO_Secret}" # CAL_APPID: "${CAL_APPID}" # CAL_SECRET: "${CAL_SECRET}" # CAL_TENNANT_ID: "${CAL_TENNANT_ID}" # TEAMS_WEBHOOK_URL: "${TEAMS_WEBHOOK_URL}" # FEEDBACK_SERVER_BASE_URL: "${FEEDBACK_SERVER_BASE_URL}" # WORDPRESS_BOOKING_URL: "${WORDPRESS_BOOKING_URL}" # MS_BOOKINGS_URL: "${MS_BOOKINGS_URL}" # volumes: # - ./lead-engine:/app # - ./lead-engine/data:/app/data # Local persistent database fotograf-de-scraper-backend: build: context: ./fotograf-de-scraper/backend dockerfile: Dockerfile container_name: fotograf-de-scraper-backend env_file: - ./fotograf-de-scraper/.env environment: - TZ=Europe/Berlin ports: - "8002:8000" volumes: - ./fotograf-de-scraper/backend:/app - ./fotograf-de-scraper/backend/data:/app/data restart: unless-stopped fotograf-de-scraper-frontend: build: context: ./fotograf-de-scraper/frontend dockerfile: Dockerfile args: VITE_API_BASE_URL: "http://192.168.178.6:8002" container_name: fotograf-de-scraper-frontend ports: - "3009:80" depends_on: - fotograf-de-scraper-backend restart: unless-stopped volumes: gtm_architect_data: {} b2b_marketing_data: {} transcription_uploads: {} content_engine_data: {} competitor_analysis_data: {} market_intel_data: {}