mirror of
https://github.com/linyqh/NarratoAI.git
synced 2025-12-10 18:02:51 +00:00
重构Docker相关配置,包括: - 更新.dockerignore文件,增加更多忽略规则 - 优化requirements.txt依赖管理 - 新增Makefile提供常用命令 - 重构docker-compose.yml配置 - 增强docker-entrypoint.sh功能 - 改进Dockerfile多阶段构建 - 新增docker-deploy.sh一键部署脚本
87 lines
2.0 KiB
Bash
87 lines
2.0 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# 函数:打印日志
|
|
log() {
|
|
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
|
|
}
|
|
|
|
# 函数:检查必要的文件和目录
|
|
check_requirements() {
|
|
log "检查应用环境..."
|
|
|
|
# 检查配置文件
|
|
if [ ! -f "config.toml" ]; then
|
|
if [ -f "config.example.toml" ]; then
|
|
log "复制示例配置文件..."
|
|
cp config.example.toml config.toml
|
|
else
|
|
log "警告: 未找到配置文件"
|
|
fi
|
|
fi
|
|
|
|
# 检查必要的目录
|
|
for dir in "storage/temp" "storage/tasks" "storage/json" "storage/narration_scripts" "storage/drama_analysis"; do
|
|
if [ ! -d "$dir" ]; then
|
|
log "创建目录: $dir"
|
|
mkdir -p "$dir"
|
|
fi
|
|
done
|
|
|
|
log "环境检查完成"
|
|
}
|
|
|
|
# 函数:启动 WebUI
|
|
start_webui() {
|
|
log "启动 NarratoAI WebUI..."
|
|
|
|
# 检查端口是否可用
|
|
if command -v netstat >/dev/null 2>&1; then
|
|
if netstat -tuln | grep -q ":8501 "; then
|
|
log "警告: 端口 8501 已被占用"
|
|
fi
|
|
fi
|
|
|
|
# 启动 Streamlit 应用
|
|
exec streamlit run webui.py \
|
|
--server.address=0.0.0.0 \
|
|
--server.port=8501 \
|
|
--server.enableCORS=true \
|
|
--server.maxUploadSize=2048 \
|
|
--server.enableXsrfProtection=false \
|
|
--browser.gatherUsageStats=false \
|
|
--browser.serverAddress=0.0.0.0 \
|
|
--logger.level=info
|
|
}
|
|
|
|
# 主逻辑
|
|
log "NarratoAI Docker 容器启动中..."
|
|
|
|
# 检查环境
|
|
check_requirements
|
|
|
|
# 根据参数执行不同的命令
|
|
case "$1" in
|
|
"webui"|"")
|
|
start_webui
|
|
;;
|
|
"bash"|"sh")
|
|
log "启动交互式 shell..."
|
|
exec /bin/bash
|
|
;;
|
|
"health")
|
|
# 健康检查命令
|
|
log "执行健康检查..."
|
|
if curl -f http://localhost:8501/_stcore/health >/dev/null 2>&1; then
|
|
log "健康检查通过"
|
|
exit 0
|
|
else
|
|
log "健康检查失败"
|
|
exit 1
|
|
fi
|
|
;;
|
|
*)
|
|
log "执行自定义命令: $*"
|
|
exec "$@"
|
|
;;
|
|
esac |