fix: 容器启动时自动同步数据库 schema,解决线上部署后表结构不同步导致的加载失败
This commit is contained in:
+8
-1
@@ -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/standalone ./
|
||||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
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
|
RUN mkdir -p /app/data && chown nextjs:nodejs /app/data
|
||||||
|
|
||||||
USER nextjs
|
USER nextjs
|
||||||
@@ -43,4 +50,4 @@ ENV PORT=3000
|
|||||||
ENV HOSTNAME="0.0.0.0"
|
ENV HOSTNAME="0.0.0.0"
|
||||||
ENV DATABASE_URL="file:/app/data/prod.db"
|
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"]
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user