diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index 47f4d5b..7c89216 100644 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -1,10 +1,21 @@ #!/bin/sh set -eu -MAX_MIGRATION_RETRIES="${MIGRATION_MAX_RETRIES:-30}" +MAX_MIGRATION_RETRIES="${MIGRATION_MAX_RETRIES:-6}" MIGRATION_RETRY_DELAY_SECONDS="${MIGRATION_RETRY_DELAY_SECONDS:-2}" ATTEMPT=1 +# Auto-resolve any previously failed migrations so deploy can proceed. +# This handles the case where a migration partially applied and was fixed +# in a subsequent deploy — without this, Prisma refuses to run anything. +echo "==> Checking for failed migrations..." +MIGRATE_STATUS=$(npx prisma migrate status 2>&1 || true) +FAILED=$(echo "$MIGRATE_STATUS" | sed -n 's/.*The `\([^`]*\)` migration.*failed.*/\1/p' | head -1) +if [ -n "$FAILED" ]; then + echo "==> Found failed migration: $FAILED — marking as rolled back..." + npx prisma migrate resolve --rolled-back "$FAILED" +fi + echo "==> Running database migrations (with retry)..." until npx prisma migrate deploy; do if [ "$ATTEMPT" -ge "$MAX_MIGRATION_RETRIES" ]; then