#!/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