From fe7af1775a7114836f68f254fae71b151bbb91bd Mon Sep 17 00:00:00 2001 From: ulsklyc <108589275+ulsklyc@users.noreply.github.com> Date: Wed, 25 Mar 2026 09:02:44 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20Entrypoint-Script=20f=C3=BCr=20robuste?= =?UTF-8?q?=20/data-Permissions=20(SQLITE=5FCANTOPEN)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit chown im Dockerfile reicht nicht: Docker überschreibt beim Mounten eines named Volume die Image-Permissions. Entrypoint-Script (läuft als root) korrigiert /data-Ownership zur Laufzeit und startet dann via su-exec als unprivilegierten node-User (korrekte Signal-Weiterleitung). Co-Authored-By: Claude Sonnet 4.6 --- Dockerfile | 12 ++++++++---- entrypoint.sh | 6 ++++++ 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 26a5d52..541881d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,7 @@ RUN apt-get update && apt-get install -y \ make \ g++ \ libsqlcipher-dev \ + su-exec \ && rm -rf /var/lib/apt/lists/* WORKDIR /app @@ -17,11 +18,14 @@ RUN npm ci --omit=dev # Anwendungscode COPY . . -# Daten-Volume-Verzeichnis mit korrektem Besitzer (vor USER node!) -RUN mkdir -p /data && chown node:node /data +# Daten-Volume-Verzeichnis anlegen (Permissions werden zur Laufzeit gesetzt) +RUN mkdir -p /data + +# Entrypoint: korrigiert /data-Permissions und startet als node-User +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh EXPOSE 3000 -USER node - +ENTRYPOINT ["/entrypoint.sh"] CMD ["node", "server/index.js"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..1b15242 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# Entrypoint: /data-Permissions zur Laufzeit korrigieren, dann als node-User starten. +# Notwendig, weil Docker beim Mounten eines named Volume die Image-Permissions überschreibt. +set -e +chown -R node:node /data +exec su-exec node "$@"