🛡️ SAFETY: Make SQL schema non-fatal with timeout

- Added 2-minute timeout to psql execution
- Schema failures no longer crash Directus startup
- Directus can start with empty schema if needed
- Prevents infinite hangs on large SQL files
This commit is contained in:
cawcenter
2025-12-14 15:24:50 -05:00
parent 3cd7073ecc
commit c8592597f8

View File

@@ -60,15 +60,19 @@ fi
echo "📦 Bootstrapping Directus..." echo "📦 Bootstrapping Directus..."
npx directus bootstrap npx directus bootstrap
# === Apply Schema from Code === # === Apply Schema from Code (NON-FATAL - Directus can start without it) ===
if [ -f "/directus/schema.yaml" ]; then if [ -f "/directus/schema.yaml" ]; then
echo "🔄 Applying schema from schema.yaml..." echo "🔄 Applying schema from schema.yaml..."
npx directus schema apply /directus/schema.yaml --yes npx directus schema apply /directus/schema.yaml --yes || echo "⚠️ schema.yaml apply failed, continuing anyway"
echo "✅ Schema applied from code" echo "✅ Schema applied from code"
elif [ -f "/directus/complete_schema.sql" ]; then elif [ -f "/directus/complete_schema.sql" ]; then
echo "🔄 Applying schema from complete_schema.sql..." echo "🔄 Applying schema from complete_schema.sql..."
PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_DATABASE" < /directus/complete_schema.sql # Run in background with timeout to prevent hanging
echo "✅ SQL schema applied" timeout 120 sh -c 'PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_DATABASE" < /directus/complete_schema.sql' || {
echo "⚠️ SQL schema apply failed or timed out (2 min), continuing anyway"
echo "⚠️ You may need to run the schema manually later"
}
echo "✅ SQL schema step complete"
else else
echo "⚠️ No schema.yaml or complete_schema.sql found" echo "⚠️ No schema.yaml or complete_schema.sql found"
echo " Directus will start with empty schema" echo " Directus will start with empty schema"