# Dockerfile für das Market Intelligence Backend # Nutzt ein Node.js Image als Basis und installiert Python und alle Abhängigkeiten. # Phase 1: Build Stage für Python-Abhängigkeiten FROM node:20-slim as base WORKDIR /app # Systemabhängigkeiten für Python-Builds und Runtime RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ python3-venv \ python3-dev \ build-essential \ gcc \ && rm -rf /var/lib/apt/lists/* # Virtuelle Umgebung erstellen RUN python3 -m venv .venv ENV PATH="/app/.venv/bin:$PATH" # Phase 2: Python-Abhängigkeiten installieren (Caching optimiert) FROM base as python-deps WORKDIR /app # ZUERST nur die Anforderungsdatei kopieren und installieren # Dieser Layer wird nur neu gebaut, wenn sich die requirements-Datei ändert COPY market-intel.requirements.txt . RUN pip install --no-cache-dir -r market-intel.requirements.txt # Phase 3: Final Stage (Anwendungscode hinzufügen) FROM base WORKDIR /app # Venv mit den installierten Paketen aus der vorherigen Stage kopieren COPY --from=python-deps /app/.venv ./.venv # ZUERST nur die package.json kopieren und npm install ausführen # Dieser Layer wird nur neu gebaut, wenn sich package.json ändert COPY general-market-intelligence/package*.json ./general-market-intelligence/ RUN cd general-market-intelligence && npm install --no-cache # DANACH den restlichen Anwendungscode kopieren COPY general-market-intelligence/server.cjs ./general-market-intelligence/ COPY market_intel_orchestrator.py . COPY helpers.py . COPY config.py . COPY gemini_api_key.txt . # Sicherstellen, dass das tmp-Verzeichnis existiert RUN mkdir -p general-market-intelligence/tmp # Umgebungsvariablen setzen (API Key wird aus Datei geladen, hier nur als Beispiel) # ENV GEMINI_API_KEY="your_gemini_api_key_here" # Besser: Als bind mount oder Secret managen # Port für die Node.js API-Brücke EXPOSE 3001 # Startbefehl für den Node.js API-Brücke-Server CMD ["node", "general-market-intelligence/server.cjs"]