76 lines
1.8 KiB
Bash
76 lines
1.8 KiB
Bash
|
||
# 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"
|