6e33a44992
COPY server ./server überschrieb das zuvor erzeugte node_modules → express fehlte, host crashte. Jetzt: Code kopieren, dann installieren. Container verifiziert: Migrationen laufen beim Start, alle Seiten + Assets (css/js/font) + API liefern 200, E2E (register→checkout→admin-stats) ok. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
1.4 KiB
Docker
32 lines
1.4 KiB
Docker
# 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"]
|