#!/bin/bash # 创建完整的离线部署包(包含Docker安装脚本) set -e PACKAGE_NAME="dms-compliance-complete-offline-$(date +%Y%m%d-%H%M%S)" TEMP_DIR="temp_package" echo "=== 创建DMS合规性测试工具完整离线部署包 ===" # 清理临时目录 rm -rf "$TEMP_DIR" mkdir -p "$TEMP_DIR" echo "[信息] 运行Docker镜像导出脚本..." ./docker-export.sh # 找到最新创建的离线包 LATEST_PACKAGE=$(ls -t dms-compliance-offline-*.tar.gz | head -n1) if [ -z "$LATEST_PACKAGE" ]; then echo "[错误] 找不到Docker离线包" exit 1 fi echo "[信息] 找到Docker离线包: $LATEST_PACKAGE" # 解压到临时目录 echo "[信息] 解压Docker离线包..." tar -xzf "$LATEST_PACKAGE" -C "$TEMP_DIR" # 获取解压后的目录名 EXTRACTED_DIR=$(ls "$TEMP_DIR") PACKAGE_DIR="$TEMP_DIR/$EXTRACTED_DIR" # 复制Docker安装脚本 echo "[信息] 添加Docker安装脚本..." cp install-docker.sh "$PACKAGE_DIR/" # 创建主安装脚本 echo "[信息] 创建主安装脚本..." cat > "$PACKAGE_DIR/install.sh" << 'EOF' #!/bin/bash # DMS合规性测试工具 - 完整安装脚本 set -e echo "=== DMS合规性测试工具完整安装脚本 ===" # 检查操作系统 if [ -f /etc/os-release ]; then . /etc/os-release echo "[信息] 操作系统: $NAME $VERSION_ID" else echo "[警告] 无法检测操作系统版本" fi # 检查Docker是否已安装 if command -v docker >/dev/null 2>&1; then echo "[信息] Docker已安装: $(docker --version)" # 检查Docker是否运行 if ! docker info >/dev/null 2>&1; then echo "[信息] 启动Docker服务..." sudo systemctl start docker || { echo "[错误] 无法启动Docker服务,请检查Docker安装" exit 1 } fi else echo "[信息] Docker未安装" read -p "是否要安装Docker和Docker Compose? (y/N): " install_docker if [[ $install_docker == [yY] || $install_docker == [yY][eE][sS] ]]; then echo "[信息] 开始安装Docker..." ./install-docker.sh echo "[信息] Docker安装完成,请重新登录或运行以下命令:" echo "newgrp docker" echo "然后重新运行此安装脚本" exit 0 else echo "[错误] 需要Docker才能运行DMS合规性测试工具" echo "请手动安装Docker后重新运行此脚本" exit 1 fi fi # 检查Docker Compose if ! command -v docker-compose >/dev/null 2>&1; then echo "[错误] Docker Compose未安装" echo "请运行 ./install-docker.sh 安装Docker Compose" exit 1 fi echo "[信息] 开始部署DMS合规性测试工具..." ./deploy.sh echo "" echo "=== 安装完成 ===" echo "" echo "服务地址:" echo "- API服务器: http://localhost:5050" echo "- 历史查看器: http://localhost:5051" echo "" echo "管理命令:" echo "- 查看状态: docker-compose ps" echo "- 查看日志: docker-compose logs" echo "- 停止服务: ./stop.sh" echo "- 卸载服务: ./uninstall.sh" echo "" EOF chmod +x "$PACKAGE_DIR/install.sh" # 更新README文件,添加完整安装说明 cat > "$PACKAGE_DIR/README.md" << 'EOF' # DMS合规性测试工具 - 完整离线部署包 这是一个包含所有必要组件的完整离线部署包,可以在没有网络连接的环境中部署DMS合规性测试工具。 ## 包含内容 - DMS合规性测试工具Docker镜像 - Nginx Docker镜像(可选) - Docker和Docker Compose安装脚本 - 自动化部署脚本 - 配置文件和文档 ## 系统要求 ### 最低要求 - CPU: 2核心 - 内存: 2GB - 磁盘: 5GB可用空间 - 操作系统: - Ubuntu 18.04+ - CentOS 7+ - RHEL 7+ - Debian 9+ ### 推荐配置 - CPU: 4核心 - 内存: 4GB - 磁盘: 10GB可用空间 ## 快速安装 ### 方法一:一键安装(推荐) ```bash # 解压部署包 tar -xzf dms-compliance-complete-offline-*.tar.gz cd dms-compliance-offline-* # 运行一键安装脚本 ./install.sh ``` ### 方法二:分步安装 1. **安装Docker(如果未安装)** ```bash ./install-docker.sh # 安装完成后需要重新登录或运行: newgrp docker ``` 2. **部署应用** ```bash ./deploy.sh ``` ## 服务访问 安装完成后,可以通过以下地址访问: - **API服务器**: http://localhost:5050 - **历史查看器**: http://localhost:5051 ## 常用操作 ### 服务管理 ```bash # 查看服务状态 docker-compose ps # 查看服务日志 docker-compose logs # 重启服务 docker-compose restart # 停止服务 ./stop.sh # 完全卸载 ./uninstall.sh ``` ### 数据管理 数据存储位置: - `data/test_reports/` - 测试报告 - `data/uploads/` - 上传文件 - `data/logs/` - 应用日志 ### 配置管理 自定义配置文件放在 `config/` 目录中。 ## 故障排除 ### 常见问题 1. **端口冲突** - 修改 `docker-compose.yml` 中的端口映射 - 或停止占用端口的其他服务 2. **权限问题** ```bash sudo chown -R $USER:$USER data/ chmod -R 755 data/ ``` 3. **Docker服务未启动** ```bash sudo systemctl start docker sudo systemctl enable docker ``` 4. **内存不足** - 确保系统有至少2GB可用内存 - 关闭不必要的服务 ### 日志查看 ```bash # 查看应用日志 docker-compose logs dms-compliance-tool # 查看系统日志 journalctl -u docker # 查看容器详细信息 docker inspect dms-compliance-tool ``` ## 网络配置 ### 防火墙设置 如需外部访问,请开放以下端口: ```bash # CentOS/RHEL sudo firewall-cmd --permanent --add-port=5050/tcp sudo firewall-cmd --permanent --add-port=5051/tcp sudo firewall-cmd --reload # Ubuntu/Debian sudo ufw allow 5050 sudo ufw allow 5051 ``` ### 反向代理 如需使用Nginx反向代理: ```bash docker-compose --profile with-nginx up -d ``` ## 技术支持 如遇到问题,请提供: 1. 操作系统版本:`cat /etc/os-release` 2. Docker版本:`docker --version` 3. 错误日志:`docker-compose logs` 4. 系统资源:`free -h && df -h` ## 更新升级 1. 停止当前服务:`./stop.sh` 2. 备份数据:`cp -r data/ data_backup/` 3. 部署新版本 4. 恢复数据(如需要) ## 安全建议 1. 定期备份 `data/` 目录 2. 限制网络访问(仅内网使用) 3. 定期更新Docker和系统 4. 监控系统资源使用情况 EOF # 重新打包 echo "[信息] 创建最终部署包..." cd "$TEMP_DIR" tar -czf "../$PACKAGE_NAME.tar.gz" "$EXTRACTED_DIR" cd .. # 清理临时文件 rm -rf "$TEMP_DIR" rm -f "$LATEST_PACKAGE" echo "" echo "=== 完整离线部署包创建完成 ===" echo "文件名: $PACKAGE_NAME.tar.gz" echo "大小: $(du -h "$PACKAGE_NAME.tar.gz" | cut -f1)" echo "" echo "部署说明:" echo "1. 将 $PACKAGE_NAME.tar.gz 传输到目标服务器" echo "2. 解压: tar -xzf $PACKAGE_NAME.tar.gz" echo "3. 进入目录: cd ${PACKAGE_NAME%.*}" echo "4. 运行安装: ./install.sh" echo "" echo "注意: 如果目标服务器没有Docker,安装脚本会提示安装Docker和Docker Compose" echo ""