# Der Wegweiser als Bild: mit Bun gebaut, von nginx ausgeliefert. # # Kein Node, kein Bun im Betrieb. Übrig sind drei vorgerenderte HTML-Seiten, # ein Wappen und etwas CSS — dafür einen JavaScript-Prozess laufen zu lassen, # der auf Anfragen wartet, um jedes Mal dieselbe Datei herauszugeben, wäre # Beschäftigung ohne Arbeit. nginx tut genau das und sonst nichts. ARG BUN_VERSION=1.3.11 # --- Bauen ------------------------------------------------------------------ FROM oven/bun:${BUN_VERSION}-alpine AS build WORKDIR /app COPY package.json bun.lock ./ RUN bun install --frozen-lockfile COPY . . RUN bun run build # --- Ausliefern ------------------------------------------------------------- FROM nginx:1.27-alpine # Vorkomprimierte Fassungen liegen dank `precompress` im Build daneben # (.gz/.br). Ohne diese Zeile ignoriert nginx sie und packt jede Antwort neu. RUN sed -i 's/^}/ gzip_static on;\n}/' /etc/nginx/nginx.conf || true COPY nginx.conf /etc/nginx/conf.d/default.conf COPY --from=build /app/build /usr/share/nginx/html EXPOSE 80