FROM node:20-alpine AS FrontendBuild WORKDIR /Frontend COPY Frontend/package.json ./ RUN npm install COPY Frontend/ ./ RUN npm run build FROM python:3.12-slim WORKDIR /App COPY Backend/requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # Headless Chromium for drawing the desktop client's diagrams (Backend/Diagrams.py). RUN playwright install --with-deps --only-shell chromium COPY Backend/ ./Backend/ COPY --from=FrontendBuild /Frontend/dist ./Frontend/dist # The same Mermaid the web view uses, for Backend/Diagrams.py. COPY --from=FrontendBuild /Frontend/node_modules/mermaid/dist/mermaid.min.js ./Backend/Vendor/mermaid.min.js WORKDIR /App/Backend EXPOSE 8420 CMD ["uvicorn", "Main:Application", "--host", "0.0.0.0", "--port", "8420"]