This commit is contained in:
parent
94554e9c69
commit
bffbc4665a
|
|
@ -4,6 +4,7 @@ set -e
|
||||||
# 标记文件路径(使用系统级目录)
|
# 标记文件路径(使用系统级目录)
|
||||||
FLAG_DIR="/var/lib/db-init"
|
FLAG_DIR="/var/lib/db-init"
|
||||||
FLAG_FILE="$FLAG_DIR/.db_initialized"
|
FLAG_FILE="$FLAG_DIR/.db_initialized"
|
||||||
|
LOG_FILE="/var/log/postgres-init.log"
|
||||||
|
|
||||||
# 数据库连接配置
|
# 数据库连接配置
|
||||||
export PGUSER=supabase_admin
|
export PGUSER=supabase_admin
|
||||||
|
|
@ -12,28 +13,46 @@ export PGHOST=127.0.0.1
|
||||||
export PGPORT=5432
|
export PGPORT=5432
|
||||||
export PGDATABASE=postgres
|
export PGDATABASE=postgres
|
||||||
|
|
||||||
# 提前创建标记目录
|
# 创建标记目录和日志目录
|
||||||
mkdir -p "$FLAG_DIR"
|
mkdir -p "$FLAG_DIR"
|
||||||
|
mkdir -p "$(dirname "$LOG_FILE")"
|
||||||
|
|
||||||
# 如果标记已存在,跳过执行
|
# 如果标记已存在,跳过执行
|
||||||
if [ -f "$FLAG_FILE" ]; then
|
if [ -f "$FLAG_FILE" ]; then
|
||||||
echo "✅ Database has already been initialized, skipping."
|
echo "✅ Database has already been initialized, skipping." | tee -a "$LOG_FILE"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "🚀 Starting database initialization..."
|
echo "🚀 Starting database initialization..." | tee -a "$LOG_FILE"
|
||||||
|
|
||||||
|
# 封装重试逻辑
|
||||||
|
retry_until_success() {
|
||||||
|
local sql_file="$1"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo " ▶ Executing $sql_file" | tee -a "$LOG_FILE"
|
||||||
|
|
||||||
|
if psql -v ON_ERROR_STOP=1 -f "$sql_file" >> "$LOG_FILE" 2>&1; then
|
||||||
|
echo " ✅ Success: $sql_file" | tee -a "$LOG_FILE"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo " ❌ ERROR in $sql_file" | tee -a "$LOG_FILE"
|
||||||
|
echo " 🔁 Retrying in 5 seconds..." | tee -a "$LOG_FILE"
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# 执行 migrations
|
# 执行 migrations
|
||||||
echo "📂 Running migrations..."
|
echo "📂 Running migrations..." | tee -a "$LOG_FILE"
|
||||||
for file in $(ls /supabase/chatdesk/supabase/migrations/*.sql | sort); do
|
for file in $(ls /supabase/chatdesk/supabase/migrations/*.sql | sort); do
|
||||||
echo " ▶ Executing $file"
|
retry_until_success "$file"
|
||||||
psql -f "$file"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# 执行 seed.sql
|
# 执行 seed.sql
|
||||||
echo "🌱 Running seed.sql..."
|
echo "🌱 Running seed.sql..." | tee -a "$LOG_FILE"
|
||||||
psql -f /supabase/chatdesk/supabase/seed.sql
|
retry_until_success /supabase/chatdesk/supabase/seed.sql
|
||||||
|
|
||||||
# 写入初始化标记
|
# 写入初始化标记
|
||||||
touch "$FLAG_FILE"
|
touch "$FLAG_FILE"
|
||||||
echo "✅ Database initialization complete. Marked as initialized at $FLAG_FILE"
|
echo "✅ Database initialization complete. Marked as initialized at $FLAG_FILE" | tee -a "$LOG_FILE"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 标记文件路径(使用系统级目录)
|
||||||
|
FLAG_DIR="/var/lib/db-init"
|
||||||
|
FLAG_FILE="$FLAG_DIR/.db_initialized"
|
||||||
|
|
||||||
|
# 数据库连接配置
|
||||||
|
export PGUSER=supabase_admin
|
||||||
|
export PGPASSWORD=postgres
|
||||||
|
export PGHOST=127.0.0.1
|
||||||
|
export PGPORT=5432
|
||||||
|
export PGDATABASE=postgres
|
||||||
|
|
||||||
|
# 提前创建标记目录
|
||||||
|
mkdir -p "$FLAG_DIR"
|
||||||
|
|
||||||
|
# 如果标记已存在,跳过执行
|
||||||
|
if [ -f "$FLAG_FILE" ]; then
|
||||||
|
echo "✅ Database has already been initialized, skipping."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "🚀 Starting database initialization..."
|
||||||
|
|
||||||
|
# 执行 migrations
|
||||||
|
echo "📂 Running migrations..."
|
||||||
|
for file in $(ls /supabase/chatdesk/supabase/migrations/*.sql | sort); do
|
||||||
|
echo " ▶ Executing $file"
|
||||||
|
psql -f "$file"
|
||||||
|
done
|
||||||
|
|
||||||
|
# 执行 seed.sql
|
||||||
|
echo "🌱 Running seed.sql..."
|
||||||
|
psql -f /supabase/chatdesk/supabase/seed.sql
|
||||||
|
|
||||||
|
# 写入初始化标记
|
||||||
|
touch "$FLAG_FILE"
|
||||||
|
echo "✅ Database initialization complete. Marked as initialized at $FLAG_FILE"
|
||||||
Loading…
Reference in New Issue