Refactor Prisma migration handling in docker-entrypoint.sh
- Introduced a function to handle schema synchronization with prisma db push. - Enhanced migration logic to fall back to db push if migration fails with P3005 error. - Improved logging for migration processes to aid in debugging.
This commit is contained in:
@@ -1,12 +1,37 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
if [ -d "prisma/migrations" ] && [ -n "$(find prisma/migrations -mindepth 1 -maxdepth 1 -type d 2>/dev/null)" ]; then
|
run_db_push() {
|
||||||
echo "Applying Prisma migrations with migrate deploy..."
|
echo "Syncing schema with prisma db push..."
|
||||||
npx prisma migrate deploy
|
|
||||||
else
|
|
||||||
echo "No Prisma migrations found, syncing schema with db push..."
|
|
||||||
npx prisma db push
|
npx prisma db push
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ ! -d "prisma/migrations" ] || [ -z "$(find prisma/migrations -mindepth 1 -maxdepth 1 -type d 2>/dev/null)" ]; then
|
||||||
|
echo "No Prisma migrations found, syncing schema with db push..."
|
||||||
|
run_db_push
|
||||||
|
else
|
||||||
|
echo "Applying Prisma migrations with migrate deploy..."
|
||||||
|
MIGRATE_LOG="$(mktemp)"
|
||||||
|
set +e
|
||||||
|
npx prisma migrate deploy >"$MIGRATE_LOG" 2>&1
|
||||||
|
MIGRATE_EXIT=$?
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$MIGRATE_EXIT" -eq 0 ]; then
|
||||||
|
cat "$MIGRATE_LOG"
|
||||||
|
rm -f "$MIGRATE_LOG"
|
||||||
|
elif grep -q P3005 "$MIGRATE_LOG"; then
|
||||||
|
cat "$MIGRATE_LOG" >&2
|
||||||
|
echo "" >&2
|
||||||
|
echo "prisma migrate deploy failed with P3005: database already has schema but no migration history (typical after prisma db push)." >&2
|
||||||
|
echo "Falling back to prisma db push so the schema stays in sync." >&2
|
||||||
|
rm -f "$MIGRATE_LOG"
|
||||||
|
run_db_push
|
||||||
|
else
|
||||||
|
cat "$MIGRATE_LOG" >&2
|
||||||
|
rm -f "$MIGRATE_LOG"
|
||||||
|
exit "$MIGRATE_EXIT"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec node dist/src/main.js
|
exec node dist/src/main.js
|
||||||
|
|||||||
Reference in New Issue
Block a user