compliance/create-offline-package.sh
gongwenxin 9bd3cb63f3 docker
2025-08-13 09:52:59 +08:00

318 lines
6.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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