fix: Entrypoint-Script für robuste /data-Permissions (SQLITE_CANTOPEN)

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 <noreply@anthropic.com>
This commit is contained in:
ulsklyc
2026-03-25 09:02:44 +01:00
parent bd0d90fb59
commit fe7af1775a
2 changed files with 14 additions and 4 deletions
+8 -4
View File
@@ -6,6 +6,7 @@ RUN apt-get update && apt-get install -y \
make \ make \
g++ \ g++ \
libsqlcipher-dev \ libsqlcipher-dev \
su-exec \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
WORKDIR /app WORKDIR /app
@@ -17,11 +18,14 @@ RUN npm ci --omit=dev
# Anwendungscode # Anwendungscode
COPY . . COPY . .
# Daten-Volume-Verzeichnis mit korrektem Besitzer (vor USER node!) # Daten-Volume-Verzeichnis anlegen (Permissions werden zur Laufzeit gesetzt)
RUN mkdir -p /data && chown node:node /data 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 EXPOSE 3000
USER node ENTRYPOINT ["/entrypoint.sh"]
CMD ["node", "server/index.js"] CMD ["node", "server/index.js"]
+6
View File
@@ -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 "$@"