# chmod +x start.sh #----------------------------------------- #!/usr/bin/env bash set -e # 打印启动环境 echo "[*] Starting app with APP_ENV=${APP_ENV}" # 日志路径(宿主机会挂载) LOG_DIR="/app/logs" mkdir -p "$LOG_DIR" # 动态生成日志文件名 LOGFILE="${LOG_DIR}/lessie_sourcing_agents_$(date +'%Y%m%d_%H%M%S').log" LATEST_LOG="${LOG_DIR}/lessie_sourcing_agents_latest.log" # 启动命令 echo "[*] Launching Gunicorn..." nohup env APP_ENV=${APP_ENV} \ gunicorn -w 4 -k uvicorn.workers.UvicornWorker \ -b 0.0.0.0:7001 --timeout 300 dialogue.app:app \ --max-requests 500 --max-requests-jitter 50 \ > "$LOGFILE" 2>&1 & # 建立软链方便查看最新日志 ln -sf "$LOGFILE" "$LATEST_LOG" echo "[*] App started. Logs: $LATEST_LOG" # 前台挂起(防止容器退出) tail -F "$LOGFILE" #----------------------------------------- #!/bin/bash #脚本出错立即退出,防止容器假活 set -e # 进入项目目录 cd /app # 日志目录 LOG_DIR="/app/logs" mkdir -p "$LOG_DIR" # 日志文件(同时软链一个 latest.log 方便定位) LOG_FILE="${LOG_DIR}/lessie_sourcing_agents_$(date +'%Y%m%d_%H%M%S').log" ln -sf "$LOG_FILE" "${LOG_DIR}/lessie_sourcing_agents_latest.log" # 环境变量(默认 prod,可通过 docker run -e APP_ENV=s1 覆盖) APP_ENV="${APP_ENV:-prod}" echo "[INFO] Starting app in environment: ${APP_ENV}" # Python 环境检查 echo "[INFO] Python version:" python3 --version # 启动 Gunicorn # 输出到 stdout 的同时 tee 一份到日志文件 echo "[INFO] Launching Gunicorn..." exec gunicorn -w ${cfg_gunicornWorkers:-4} \ -k uvicorn.workers.UvicornWorker \ -b 0.0.0.0:${cfg_port:-7001} \ --timeout 300 \ --max-requests 500 \ --max-requests-jitter 50 \ --access-logfile - \ --error-logfile - \ dialogue.app:app \ 2>&1 | tee -a "$LOG_FILE"