mirror of
https://github.com/zhinianboke/xianyu-auto-reply.git
synced 2025-08-02 04:27:36 +08:00
289 lines
7.1 KiB
Bash
289 lines
7.1 KiB
Bash
#!/bin/bash
|
||
|
||
# 闲鱼自动回复系统 Docker 部署脚本
|
||
# 作者: Xianyu Auto Reply System
|
||
# 版本: 1.0.0
|
||
|
||
set -e
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 打印带颜色的消息
|
||
print_info() {
|
||
echo -e "${BLUE}[INFO]${NC} $1"
|
||
}
|
||
|
||
print_success() {
|
||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||
}
|
||
|
||
print_warning() {
|
||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||
}
|
||
|
||
print_error() {
|
||
echo -e "${RED}[ERROR]${NC} $1"
|
||
}
|
||
|
||
# 检查Docker是否安装
|
||
check_docker() {
|
||
if ! command -v docker &> /dev/null; then
|
||
print_error "Docker 未安装,请先安装 Docker"
|
||
exit 1
|
||
fi
|
||
|
||
if ! command -v docker-compose &> /dev/null; then
|
||
print_error "Docker Compose 未安装,请先安装 Docker Compose"
|
||
exit 1
|
||
fi
|
||
|
||
print_success "Docker 环境检查通过"
|
||
}
|
||
|
||
# 创建必要的目录
|
||
create_directories() {
|
||
print_info "创建必要的目录..."
|
||
|
||
# 创建目录
|
||
mkdir -p data
|
||
mkdir -p logs
|
||
mkdir -p backups
|
||
mkdir -p nginx/ssl
|
||
|
||
# 设置权限 (确保Docker容器可以写入)
|
||
chmod 755 data logs backups
|
||
|
||
# 检查权限
|
||
if [ ! -w "data" ]; then
|
||
print_error "data目录没有写权限"
|
||
exit 1
|
||
fi
|
||
|
||
if [ ! -w "logs" ]; then
|
||
print_error "logs目录没有写权限"
|
||
exit 1
|
||
fi
|
||
|
||
print_success "目录创建完成"
|
||
}
|
||
|
||
# 生成默认配置文件
|
||
generate_config() {
|
||
# 生成.env文件
|
||
if [ ! -f ".env" ]; then
|
||
if [ -f ".env.example" ]; then
|
||
print_info "从模板生成 .env 文件..."
|
||
cp .env.example .env
|
||
print_success ".env 文件已生成"
|
||
else
|
||
print_warning ".env.example 文件不存在,跳过 .env 文件生成"
|
||
fi
|
||
else
|
||
print_info ".env 文件已存在,跳过生成"
|
||
fi
|
||
|
||
# 生成global_config.yml文件
|
||
if [ ! -f "global_config.yml" ]; then
|
||
print_info "生成默认配置文件..."
|
||
|
||
cat > global_config.yml << EOF
|
||
# 闲鱼自动回复系统配置文件
|
||
API_ENDPOINTS:
|
||
login_check: https://passport.goofish.com/newlogin/hasLogin.do
|
||
message_headinfo: https://h5api.m.goofish.com/h5/mtop.idle.trade.pc.message.headinfo/1.0/
|
||
token: https://h5api.m.goofish.com/h5/mtop.taobao.idlemessage.pc.login.token/1.0/
|
||
|
||
APP_CONFIG:
|
||
api_version: '1.0'
|
||
app_key: 444e9908a51d1cb236a27862abc769c9
|
||
app_version: '1.0'
|
||
platform: web
|
||
|
||
AUTO_REPLY:
|
||
enabled: true
|
||
default_message: '亲爱的"{send_user_name}" 老板你好!所有宝贝都可以拍,秒发货的哈~不满意的话可以直接申请退款哈~'
|
||
max_retry: 3
|
||
retry_interval: 5
|
||
api:
|
||
enabled: false
|
||
host: 0.0.0.0 # 绑定所有网络接口,支持IP访问
|
||
port: 8080 # Web服务端口
|
||
url: http://0.0.0.0:8080/xianyu/reply
|
||
timeout: 10
|
||
|
||
COOKIES:
|
||
last_update_time: ''
|
||
value: ''
|
||
|
||
DEFAULT_HEADERS:
|
||
accept: application/json
|
||
accept-language: zh-CN,zh;q=0.9
|
||
cache-control: no-cache
|
||
origin: https://www.goofish.com
|
||
pragma: no-cache
|
||
referer: https://www.goofish.com/
|
||
sec-ch-ua: '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"'
|
||
sec-ch-ua-mobile: '?0'
|
||
sec-ch-ua-platform: '"Windows"'
|
||
sec-fetch-dest: empty
|
||
sec-fetch-mode: cors
|
||
sec-fetch-site: same-site
|
||
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
|
||
|
||
WEBSOCKET_URL: wss://wss-goofish.dingtalk.com/
|
||
HEARTBEAT_INTERVAL: 15
|
||
HEARTBEAT_TIMEOUT: 5
|
||
TOKEN_REFRESH_INTERVAL: 3600
|
||
TOKEN_RETRY_INTERVAL: 300
|
||
MESSAGE_EXPIRE_TIME: 300000
|
||
|
||
LOG_CONFIG:
|
||
level: INFO
|
||
format: '{time:YYYY-MM-DD HH:mm:ss.SSS} | {level} | {name}:{function}:{line} - {message}'
|
||
rotation: '1 day'
|
||
retention: '7 days'
|
||
EOF
|
||
|
||
print_success "默认配置文件已生成"
|
||
else
|
||
print_info "配置文件已存在,跳过生成"
|
||
fi
|
||
}
|
||
|
||
# 构建Docker镜像
|
||
build_image() {
|
||
print_info "构建 Docker 镜像..."
|
||
|
||
docker build -t xianyu-auto-reply:latest .
|
||
|
||
print_success "Docker 镜像构建完成"
|
||
}
|
||
|
||
# 启动服务
|
||
start_services() {
|
||
print_info "启动服务..."
|
||
|
||
# 检查是否需要启动 Nginx
|
||
if [ "$1" = "--with-nginx" ]; then
|
||
print_info "启动服务(包含 Nginx)..."
|
||
docker-compose --profile with-nginx up -d
|
||
else
|
||
print_info "启动服务(不包含 Nginx)..."
|
||
docker-compose up -d
|
||
fi
|
||
|
||
print_success "服务启动完成"
|
||
}
|
||
|
||
# 显示服务状态
|
||
show_status() {
|
||
print_info "服务状态:"
|
||
docker-compose ps
|
||
|
||
print_info "服务日志(最近10行):"
|
||
docker-compose logs --tail=10
|
||
}
|
||
|
||
# 显示访问信息
|
||
show_access_info() {
|
||
print_success "部署完成!"
|
||
echo ""
|
||
print_info "访问信息:"
|
||
echo " Web界面: http://localhost:8080"
|
||
echo " 默认账号: admin"
|
||
echo " 默认密码: admin123"
|
||
echo ""
|
||
print_info "常用命令:"
|
||
echo " 查看日志: docker-compose logs -f"
|
||
echo " 重启服务: docker-compose restart"
|
||
echo " 停止服务: docker-compose down"
|
||
echo " 更新服务: ./deploy.sh --update"
|
||
echo ""
|
||
print_info "数据目录:"
|
||
echo " 数据库: ./data/xianyu_data.db"
|
||
echo " 日志: ./logs/"
|
||
echo " 配置: ./global_config.yml"
|
||
}
|
||
|
||
# 更新服务
|
||
update_services() {
|
||
print_info "更新服务..."
|
||
|
||
# 停止服务
|
||
docker-compose down
|
||
|
||
# 重新构建镜像
|
||
build_image
|
||
|
||
# 启动服务
|
||
start_services $1
|
||
|
||
print_success "服务更新完成"
|
||
}
|
||
|
||
# 清理资源
|
||
cleanup() {
|
||
print_warning "清理 Docker 资源..."
|
||
|
||
# 停止并删除容器
|
||
docker-compose down --volumes --remove-orphans
|
||
|
||
# 删除镜像
|
||
docker rmi xianyu-auto-reply:latest 2>/dev/null || true
|
||
|
||
print_success "清理完成"
|
||
}
|
||
|
||
# 主函数
|
||
main() {
|
||
echo "========================================"
|
||
echo " 闲鱼自动回复系统 Docker 部署脚本"
|
||
echo "========================================"
|
||
echo ""
|
||
|
||
case "$1" in
|
||
--update)
|
||
print_info "更新模式"
|
||
check_docker
|
||
update_services $2
|
||
show_status
|
||
show_access_info
|
||
;;
|
||
--cleanup)
|
||
print_warning "清理模式"
|
||
cleanup
|
||
;;
|
||
--status)
|
||
show_status
|
||
;;
|
||
--help)
|
||
echo "使用方法:"
|
||
echo " $0 # 首次部署"
|
||
echo " $0 --with-nginx # 部署并启动 Nginx"
|
||
echo " $0 --update # 更新服务"
|
||
echo " $0 --update --with-nginx # 更新服务并启动 Nginx"
|
||
echo " $0 --status # 查看服务状态"
|
||
echo " $0 --cleanup # 清理所有资源"
|
||
echo " $0 --help # 显示帮助"
|
||
;;
|
||
*)
|
||
print_info "首次部署模式"
|
||
check_docker
|
||
create_directories
|
||
generate_config
|
||
build_image
|
||
start_services $1
|
||
show_status
|
||
show_access_info
|
||
;;
|
||
esac
|
||
}
|
||
|
||
# 执行主函数
|
||
main "$@"
|