153 lines
3.8 KiB
Bash
153 lines
3.8 KiB
Bash
#!/bin/bash
|
|
|
|
# FastGPT 管理脚本
|
|
# 用于快速管理 FastGPT 服务的启动、停止、重启等操作
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# 颜色输出
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 函数:显示帮助信息
|
|
show_help() {
|
|
echo "FastGPT 管理脚本"
|
|
echo "用法: $0 {start|stop|restart|status|logs|update|clean|backup}"
|
|
echo ""
|
|
echo "命令说明:"
|
|
echo " start - 启动 FastGPT 服务"
|
|
echo " stop - 停止 FastGPT 服务"
|
|
echo " restart - 重启 FastGPT 服务"
|
|
echo " status - 查看服务状态"
|
|
echo " logs - 查看实时日志"
|
|
echo " update - 更新镜像并重启"
|
|
echo " clean - 清理未使用的镜像和容器"
|
|
echo " backup - 备份数据库"
|
|
echo " help - 显示此帮助信息"
|
|
}
|
|
|
|
# 函数:检查环境
|
|
check_env() {
|
|
if [ ! -f ".env" ]; then
|
|
echo -e "${YELLOW}警告: .env 文件不存在,将使用默认配置${NC}"
|
|
echo -e "${YELLOW}建议复制 .env.example 为 .env 并进行配置${NC}"
|
|
fi
|
|
}
|
|
|
|
# 函数:启动服务
|
|
start() {
|
|
echo -e "${GREEN}正在启动 FastGPT 服务...${NC}"
|
|
check_env
|
|
docker-compose up -d
|
|
echo -e "${GREEN}FastGPT 服务已启动!${NC}"
|
|
echo -e "${GREEN}访问地址: http://localhost:3000${NC}"
|
|
}
|
|
|
|
# 函数:停止服务
|
|
stop() {
|
|
echo -e "${YELLOW}正在停止 FastGPT 服务...${NC}"
|
|
docker-compose down
|
|
echo -e "${YELLOW}FastGPT 服务已停止${NC}"
|
|
}
|
|
|
|
# 函数:重启服务
|
|
restart() {
|
|
echo -e "${GREEN}正在重启 FastGPT 服务...${NC}"
|
|
docker-compose restart
|
|
echo -e "${GREEN}FastGPT 服务已重启!${NC}"
|
|
}
|
|
|
|
# 函数:查看状态
|
|
status() {
|
|
echo -e "${GREEN}FastGPT 服务状态:${NC}"
|
|
docker-compose ps
|
|
echo ""
|
|
echo -e "${GREEN}容器资源使用情况:${NC}"
|
|
docker stats --no-stream $(docker-compose ps -q) 2>/dev/null || echo "容器未运行"
|
|
}
|
|
|
|
# 函数:查看日志
|
|
logs() {
|
|
if [ -n "$2" ]; then
|
|
# 查看特定服务的日志
|
|
docker-compose logs -f "$2"
|
|
else
|
|
# 查看所有日志
|
|
docker-compose logs -f
|
|
fi
|
|
}
|
|
|
|
# 函数:更新镜像
|
|
update() {
|
|
echo -e "${GREEN}正在更新 FastGPT 镜像...${NC}"
|
|
docker-compose pull
|
|
docker-compose up -d
|
|
echo -e "${GREEN}镜像更新完成!${NC}"
|
|
}
|
|
|
|
# 函数:清理系统
|
|
clean() {
|
|
echo -e "${YELLOW}正在清理未使用的 Docker 资源...${NC}"
|
|
docker system prune -f
|
|
echo -e "${GREEN}清理完成!${NC}"
|
|
}
|
|
|
|
# 函数:备份数据库
|
|
backup() {
|
|
BACKUP_DIR="./backups"
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
|
|
echo -e "${GREEN}正在备份数据库...${NC}"
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# 备份 PostgreSQL
|
|
docker-compose exec -T postgres pg_dump -U postgres fastgpt > "$BACKUP_DIR/postgres_backup_$TIMESTAMP.sql"
|
|
|
|
# 备份 MongoDB
|
|
docker-compose exec -T mongo mongodump --username root --authenticationDatabase admin --db fastgpt --archive="/tmp/mongo_backup_$TIMESTAMP.archive" && \
|
|
docker-compose cp mongo:"/tmp/mongo_backup_$TIMESTAMP.archive" "$BACKUP_DIR/mongo_backup_$TIMESTAMP.archive" && \
|
|
docker-compose exec -T mongo rm "/tmp/mongo_backup_$TIMESTAMP.archive"
|
|
|
|
echo -e "${GREEN}数据库备份完成!备份文件保存在 $BACKUP_DIR${NC}"
|
|
}
|
|
|
|
# 主程序
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
restart)
|
|
restart
|
|
;;
|
|
status)
|
|
status
|
|
;;
|
|
logs)
|
|
logs "$@"
|
|
;;
|
|
update)
|
|
update
|
|
;;
|
|
clean)
|
|
clean
|
|
;;
|
|
backup)
|
|
backup
|
|
;;
|
|
help|--help|-h)
|
|
show_help
|
|
;;
|
|
*)
|
|
echo -e "${RED}错误: 未知命令 $1${NC}"
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac |