#!/bin/sh set -e echo "==========================================" echo "泉友米车友会 - 启动中..." echo "==========================================" # 检查数据库文件 DB_FILE="/app/data/database.sqlite" if [ -f "$DB_FILE" ]; then echo "✓ 发现已存在的数据库文件" # 检查是否有备份表残留(这会导致sync失败) if sqlite3 "$DB_FILE" "SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_backup%';" 2>/dev/null | grep -q "_backup"; then echo "⚠ 检测到备份表残留,清理中..." sqlite3 "$DB_FILE" "SELECT 'DROP TABLE IF EXISTS ' || name || ';' FROM sqlite_master WHERE type='table' AND name LIKE '%_backup%';" | sqlite3 "$DB_FILE" 2>/dev/null || true echo "✓ 备份表已清理" fi else echo "✓ 首次启动,将创建新数据库" fi # 初始化数据库 echo "初始化数据库..." echo "[1/2] 运行数据库迁移..." node migrations/index.js echo "[2/2] 初始化管理员账号..." node init-admin.js # 替换前端 index.html 中的环境变量占位符 if [ -f "/app/public/index.html" ]; then echo "配置高德地图 Key..." # 使用环境变量替换占位符(直接修改文件) AMAP_KEY="${AMAP_KEY:-YOUR_AMAP_KEY_PLACEHOLDER}" AMAP_SECURITY_CODE="${AMAP_SECURITY_CODE:-YOUR_AMAP_SECURITY_CODE_PLACEHOLDER}" # 使用 sed -i 直接修改文件 sed -i "s|YOUR_AMAP_KEY_PLACEHOLDER|${AMAP_KEY}|g" /app/public/index.html sed -i "s|YOUR_AMAP_SECURITY_CODE_PLACEHOLDER|${AMAP_SECURITY_CODE}|g" /app/public/index.html echo "环境变量注入完成:" echo " AMAP_KEY: ${AMAP_KEY}" echo " AMAP_SECURITY_CODE: ${AMAP_SECURITY_CODE}" if [ "$AMAP_KEY" != "YOUR_AMAP_KEY_PLACEHOLDER" ] && [ -n "$AMAP_KEY" ]; then echo "✓ 高德地图 Key 已配置" else echo "⚠ 警告: 高德地图 Key 未配置,地图功能将不可用" echo " 请在 docker-compose.yml 中设置 AMAP_KEY 环境变量" fi fi echo "==========================================" echo "启动应用服务..." echo "==========================================" # 使用 dumb-init 启动应用 exec dumb-init "$@"