From 53a8bfe29b25cc73a613d33a0c7967e91039dbdd Mon Sep 17 00:00:00 2001 From: Daniel Michelberger Date: Fri, 11 Sep 2026 16:35:40 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20nginx=20startete=20nicht=20=E2=80=94=20g?= =?UTF-8?q?zip=5Fstatic=20stand=20im=20falschen=20Block?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Container ging sofort wieder aus, „exited:unhealthy", und im Deploy-Log stand nichts daneben: Gebaut, gestartet, fertig. Ausgegangen ist er, weil nginx seine Konfiguration nicht las. Schuld war ein `sed` im Dockerfile, das `gzip_static on;` vor die erste Zeile schieben sollte, die mit `}` beginnt. Das ist in der nginx.conf des Bildes aber nicht das Ende von `http { … }`, sondern das von `events { … }` — und dort ist die Anweisung ungültig. Sie steht jetzt im eigenen Server-Block, wo sie hingehört, und das `sed` ist weg. Eine Zeile, die eine fremde Konfigurationsdatei mit einem Muster umschreibt, ist ohnehin eine Wette darauf, wie die Datei innen aussieht. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01LTw6xVYgjMy9AQtfs1Gdyu --- frontend/Dockerfile | 4 ---- frontend/nginx.conf | 11 +++++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 81daeb9..49a7e64 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -21,10 +21,6 @@ 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 diff --git a/frontend/nginx.conf b/frontend/nginx.conf index 220b6cc..5fbe9e2 100644 --- a/frontend/nginx.conf +++ b/frontend/nginx.conf @@ -6,6 +6,17 @@ server { root /usr/share/nginx/html; index index.html; + # Vorkomprimierte Fassungen liegen dank `precompress` im Build daneben + # (.gz). Ohne diese Zeile ignoriert nginx sie und packt jede Antwort neu. + # + # Sie steht hier im Server-Block und nicht per `sed` in der + # `nginx.conf` des Bildes: Dort war die erste Zeile, die mit `}` beginnt, + # das Ende von `events { … }`. `gzip_static` ist dort keine gültige + # Anweisung, nginx verweigerte den Start, und der Container ging sofort + # wieder aus — „exited:unhealthy", ohne dass im Deploy-Log etwas + # danebenstand. + gzip_static on; + # Die Seiten sind beim Bauen entstanden und ändern sich nur mit dem # nächsten Deployment. Das HTML selbst bleibt trotzdem ungecacht: Sonst # zeigt ein Browser den Wegweiser von vorgestern, wenn sich der Text