# RAPPORT-HOST-Image — bündelt das Node-Backend MIT der gebauten Hugo-Website. # Haupt-Build-Kontext: RAPPORT-HOST. Zusatz-Kontext `website`: RAPPORT-WEBSITE. # ── Stage 1: Hugo-Website bauen ────────────────────────────────────────────── FROM hugomods/hugo:exts AS web WORKDIR /src COPY --from=website . /src # Frisch bauen (alte public/resources ignorieren), Ausgabe nach /public. RUN rm -rf public resources && hugo --gc --baseURL / --destination /public # ── Stage 2: Node-Backend ──────────────────────────────────────────────────── FROM node:20-alpine WORKDIR /app # Backend-Code zuerst, DANN installieren — sonst überschreibt der COPY das # frisch erzeugte node_modules wieder (war der Fehler: express not found). COPY server ./server COPY package.json ./ RUN cd server && npm install --omit=dev --no-audit --no-fund # Gebaute Website aus Stage 1. COPY --from=web /public ./website-public # Das Backend liest WEBSITE_PUBLIC_DIR; hier auf die gebündelte Website zeigen. ENV WEBSITE_PUBLIC_DIR=/app/website-public ENV PORT=8787 EXPOSE 8787 # Beim Start: HOST-Schema migrieren, dann Server. (host-db ist via compose # depends_on healthy.) CMD ["sh", "-c", "node server/migrate.js && node server/index.js"]