diff --git a/Dockerfile b/Dockerfile index 4204884..b9dfc76 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,12 +39,22 @@ ENV HOSTNAME=0.0.0.0 RUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001 +# Prisma-CLI fuer "migrate deploy" beim Containerstart. Sie bekommt eine +# eigene, minimale Installation unter /opt: aus dem Builder laesst sie sich +# nicht herausloesen, weil @prisma/config einen ganzen Abhaengigkeitsbaum +# nachzieht (effect, c12, …). Die Version wird aus dem Builder uebernommen, +# damit CLI und generierter Client nicht auseinanderlaufen. +COPY --from=builder /app/node_modules/prisma/package.json /tmp/prisma-cli.json +RUN npm install --prefix /opt/prisma-cli --no-save --no-audit --no-fund \ + "prisma@$(node -p "require('/tmp/prisma-cli.json').version")" \ + && rm -f /tmp/prisma-cli.json \ + && npm cache clean --force + COPY --from=builder /app/public ./public COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static -# Prisma-CLI, Engines und Schema fuer "migrate deploy" beim Containerstart. -COPY --from=builder --chown=nextjs:nodejs /app/node_modules/prisma ./node_modules/prisma +# Query-Engine und Schema fuer die Laufzeit bzw. die Migration. COPY --from=builder --chown=nextjs:nodejs /app/node_modules/@prisma ./node_modules/@prisma COPY --from=builder --chown=nextjs:nodejs /app/node_modules/.prisma ./node_modules/.prisma COPY --from=builder --chown=nextjs:nodejs /app/prisma ./prisma diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index b1b5f9c..fe9b74b 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -4,7 +4,7 @@ # ───────────────────────────────────────────────────────────── set -e -PRISMA_CLI="/app/node_modules/prisma/build/index.js" +PRISMA_CLI="/opt/prisma-cli/node_modules/prisma/build/index.js" SCHEMA="/app/prisma/schema.prisma" if [ -z "$DATABASE_URL" ]; then @@ -12,6 +12,11 @@ if [ -z "$DATABASE_URL" ]; then exit 1 fi +if [ ! -f "$PRISMA_CLI" ]; then + echo "[nebula] FEHLER: Prisma-CLI nicht unter $PRISMA_CLI gefunden." >&2 + exit 1 +fi + echo "[nebula] Migrationen werden eingespielt…" attempt=0