#!/bin/sh # 增加调试信息,看看环境变量是否正确传入 echo "--- Entrypoint: Environment Variables ---" echo "PORT=${PORT}" # Hugging Face 会设置 echo "ACCESS_CODES=${ACCESS_CODES}" # 应该来自 HF Secrets echo "WEBDAV_URL=${WEBDAV_URL}" # 应该来自 HF Secrets echo "WEBDAV_USERNAME=${WEBDAV_USERNAME}" # 应该来自 HF Secrets # WEBDAV_PASSWORD 不打印,太危险 echo "WEBDAV_BACKUP_PATH=${WEBDAV_BACKUP_PATH}" echo "SYNC_INTERVAL=${SYNC_INTERVAL}" echo "-----------------------------------------" # 确保数据目录存在且权限正确 (虽然 Dockerfile 里创建了,这里再确认下) # 注意:由于我们切换到了 appuser,需要确保 appuser 有权限 # chown 在 Dockerfile 中已完成,这里主要是确保目录存在 mkdir -p /home/user/data # 启动后台同步脚本 echo "[Entrypoint] Starting background sync script (sync_data.sh)..." /home/user/app/sync_data.sh # 2. (关键!) 在启动 Go 程序之前,再次确认权限 (可选但推荐调试) echo "DEBUG: Checking permissions right before starting Go app:" echo "Current user:" id echo "Permissions for /app/files:" ls -ld /home/user/data # 如果 files 目录存在,看看里面的内容权限 if [ -d "/home/user/data" ]; then echo "DEBUG: Contents of /app/files:" ls -lA /home/user/data fi echo "Starting Go application..." # 等待一小会儿,让后台脚本有机会启动(可选,但有时有帮助) sleep 2 # 启动主 Go 应用(在前台运行) # 使用 exec 会让 Go 应用替换掉 shell 进程,成为 PID 1,能更好地接收信号 echo "[Entrypoint] Starting main Go application (main)..." exec /home/user/app/main # 如果 exec /app/main 失败,脚本会继续执行到这里(异常情况) echo "[Entrypoint] Failed to exec /app/main!" exit 1