From 039887547d3b68e2b5f7fe2ee94ec359d9c55679 Mon Sep 17 00:00:00 2001 From: kurihada Date: Sat, 28 Feb 2026 17:24:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=B9=E5=99=A8=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=97=B6=E8=87=AA=E5=8A=A8=E5=90=8C=E6=AD=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=20schema=EF=BC=8C=E8=A7=A3=E5=86=B3=E7=BA=BF=E4=B8=8A?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E5=90=8E=E8=A1=A8=E7=BB=93=E6=9E=84=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=AF=BC=E8=87=B4=E7=9A=84=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 9 ++++++++- docker-entrypoint.sh | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 docker-entrypoint.sh diff --git a/Dockerfile b/Dockerfile index cfb6496..b3095ff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -35,6 +35,13 @@ COPY --from=builder /app/prisma/template.db ./template.db COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static +# Prisma CLI + schema engine for automatic schema migration on startup +COPY --from=builder /app/node_modules/prisma ./node_modules/prisma +COPY --from=builder /app/node_modules/@prisma/engines ./node_modules/@prisma/engines + +COPY docker-entrypoint.sh ./ +RUN chmod +x docker-entrypoint.sh + RUN mkdir -p /app/data && chown nextjs:nodejs /app/data USER nextjs @@ -43,4 +50,4 @@ ENV PORT=3000 ENV HOSTNAME="0.0.0.0" ENV DATABASE_URL="file:/app/data/prod.db" -CMD ["sh", "-c", "cp -n template.db /app/data/prod.db 2>/dev/null; node server.js"] +CMD ["./docker-entrypoint.sh"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..f2a73e4 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -e + +DB_PATH="/app/data/prod.db" + +if [ ! -f "$DB_PATH" ]; then + echo "[db] First run — creating database from template" + cp /app/template.db "$DB_PATH" +fi + +echo "[db] Syncing schema..." +node ./node_modules/prisma/build/index.js db push --skip-generate --accept-data-loss 2>&1 || \ + echo "[db] ⚠ Schema sync failed, starting with existing schema" + +exec node server.js