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 "$@"