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