flnxi-Wu/scripts/docker-entrypoint.sh
2026-05-25 16:53:50 +08:00

55 lines
1.5 KiB
Bash

#!/bin/sh
# Docker 容器启动脚本
#
# 功能:
# 1. 自动执行数据库迁移
# 2. 自动初始化系统数据(内置模板等)
# 3. 启动 Next.js 应用
#
# 客户无需任何手动操作,只需启动容器即可
set -e
echo "=========================================="
echo "FLNXI 素材库系统启动中..."
echo "=========================================="
# 1. 等待数据库就绪
echo "[1/3] 检查数据库连接..."
MAX_RETRIES=30
RETRY_COUNT=0
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
if echo "SELECT 1" | npx prisma db execute --stdin > /dev/null 2>&1; then
echo "✓ 数据库连接成功"
break
fi
RETRY_COUNT=$((RETRY_COUNT + 1))
echo "等待数据库就绪... ($RETRY_COUNT/$MAX_RETRIES)"
sleep 2
done
if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then
echo "✗ 数据库连接超时,请检查 DATABASE_URL 配置"
exit 1
fi
# 2. 执行数据库迁移
echo "[2/3] 执行数据库迁移..."
if npx prisma migrate deploy; then
echo "✓ 数据库迁移完成"
else
echo "✗ 数据库迁移失败,已停止启动以保护数据一致性"
echo "请先检查迁移日志、数据库连接和备份状态,修复后再重新启动容器"
exit 1
fi
# 3. 启动应用(系统初始化会在首次请求时自动执行)
echo "[3/3] 启动应用服务..."
echo "=========================================="
echo "系统启动完成!"
echo "访问地址: http://localhost:${PORT:-3000}"
echo "=========================================="
exec node server.js