在镜像中增加数据导出文件,修改部署指南

This commit is contained in:
Tian jianyong 2025-08-01 11:01:17 +08:00
parent a100aa5f9a
commit 264e8c470c
3 changed files with 103 additions and 216 deletions

View File

@ -311,6 +311,22 @@ cp "$PROJECT_ROOT/deploy/.env.template" "$CONFIG_DIR/"
# 复制部署脚本
cp "$PROJECT_ROOT/deploy/deploy.sh" "$SCRIPTS_DIR/"
# 复制docker配置目录
echo "复制Docker配置..."
mkdir -p "$PROJECT_ROOT/offline-deploy/docker"
cp -r "$PROJECT_ROOT/deploy/docker"/* "$PROJECT_ROOT/offline-deploy/docker/" 2>/dev/null || true
# 复制文档
echo "复制文档..."
mkdir -p "$PROJECT_ROOT/offline-deploy/docs"
cp -r "$PROJECT_ROOT/deploy/docs"/* "$PROJECT_ROOT/offline-deploy/docs/" 2>/dev/null || true
# 复制数据库脚本(如果存在)
if [ -d "$PROJECT_ROOT/sql" ]; then
echo "复制数据库脚本..."
cp -r "$PROJECT_ROOT/sql" "$PROJECT_ROOT/offline-deploy/"
fi
# 创建离线部署说明
cat > "$PROJECT_ROOT/offline-deploy/README-离线部署.md" << 'EOF'
# QAUP 离线部署包
@ -320,13 +336,24 @@ cat > "$PROJECT_ROOT/offline-deploy/README-离线部署.md" << 'EOF'
- `images/` - Docker 镜像文件
- `config/` - 配置文件
- `scripts/` - 部署脚本
- `docker/` - Docker配置和数据库初始化脚本
- `docs/` - 部署文档
- `sql/` - 数据库架构文件(如果存在)
## 重要文件说明
### 数据库初始化数据
- `docker/postgres/export/01_system_data.sql` - 系统基础数据
- `docker/postgres/export/02_business_data.sql` - 业务数据
- `docker/postgres/export/03_sample_data.sql` - 示例数据
- `docker/postgres/export/initial_data_complete.sql` - 完整初始化数据
## 部署步骤
1. 将整个 `offline-deploy` 目录复制到目标服务器
2. 导入镜像:`./scripts/load-images.sh`
2. 导入镜像:`sh ./scripts/load-images.sh`
3. 配置环境:`cp config/.env.template .env` 并编辑
4. 启动服务:`./scripts/deploy.sh install`
4. 启动服务:`sh ./scripts/deploy.sh install`
## 系统要求
@ -334,6 +361,13 @@ cat > "$PROJECT_ROOT/offline-deploy/README-离线部署.md" << 'EOF'
- Docker Compose 1.29+
- 至少 4GB 内存
- 至少 20GB 磁盘空间
## 数据库初始化
系统启动时会自动执行数据库初始化脚本,按以下顺序:
1. 系统数据(用户、角色、权限等)
2. 业务数据(机场配置、区域设置等)
3. 示例数据(测试用途,可选)
EOF
# 创建离线部署包

View File

@ -40,165 +40,27 @@ cd QAUP-Management
- 导出所有镜像为 tar.gz 文件
- 生成镜像清单和校验和
#### 4. 创建离线部署包
#### 4. 完成离线部署包创建
镜像准备脚本执行完成后,会自动创建完整的离线部署包:
```bash
# 创建离线部署包制作脚本
cat > create-offline-package.sh << 'EOF'
#!/bin/bash
# 脚本执行完成后,会显示类似输出:
# 离线部署包创建完成: qaup-offline-deploy-20240801_143022.tar.gz
# 部署包大小: 1.2G
set -e
PACKAGE_NAME="qaup-offline-deploy-$(date +%Y%m%d)"
PACKAGE_DIR="./$PACKAGE_NAME"
echo "创建离线部署包: $PACKAGE_NAME"
# 创建包目录结构
mkdir -p "$PACKAGE_DIR"/{images,config,scripts,docs}
# 复制 Docker 镜像
echo "复制 Docker 镜像..."
cp -r offline-deploy/images/* "$PACKAGE_DIR/images/"
# 复制配置文件
echo "复制配置文件..."
cp docker-compose*.yml "$PACKAGE_DIR/"
cp .env.template "$PACKAGE_DIR/"
cp -r config "$PACKAGE_DIR/"
cp -r docker "$PACKAGE_DIR/"
# 复制脚本文件
echo "复制脚本文件..."
cp deploy.sh "$PACKAGE_DIR/"
cp -r docker "$PACKAGE_DIR/"
# 复制文档
echo "复制文档..."
cp -r docs "$PACKAGE_DIR/"
cp README.md "$PACKAGE_DIR/" 2>/dev/null || true
# 复制数据库架构
echo "复制数据库文件..."
mkdir -p "$PACKAGE_DIR/sql"
cp sql/qaup_database_schema.sql "$PACKAGE_DIR/sql/"
# 创建安装脚本
cat > "$PACKAGE_DIR/install.sh" << 'INSTALL_EOF'
#!/bin/bash
# QAUP 离线安装脚本
set -e
echo "========================================="
echo " QAUP 系统离线安装"
echo "========================================="
# 检查 Docker
if ! command -v docker &> /dev/null; then
echo "错误: Docker 未安装,请先安装 Docker"
exit 1
fi
if ! command -v docker-compose &> /dev/null; then
echo "错误: Docker Compose 未安装,请先安装 Docker Compose"
exit 1
fi
# 导入镜像
echo "导入 Docker 镜像..."
./docker/load-images.sh
# 初始化配置
echo "初始化配置..."
if [ ! -f .env ]; then
cp .env.template .env
echo "请编辑 .env 文件配置系统参数"
fi
# 设置脚本权限
echo "设置脚本权限..."
find . -name "*.sh" -exec chmod +x {} \;
# 创建必要目录
echo "创建数据目录..."
mkdir -p data/{postgres,redis,uploads}
mkdir -p logs/{postgres,redis,app,nginx}
mkdir -p backup/postgres
echo ""
echo "离线安装准备完成!"
echo ""
echo "下一步操作:"
echo "1. 编辑 .env 文件配置系统参数"
echo "2. 运行: ./deploy.sh install"
echo ""
INSTALL_EOF
chmod +x "$PACKAGE_DIR/install.sh"
# 创建 README
cat > "$PACKAGE_DIR/README.md" << 'README_EOF'
# QAUP 系统离线部署包
## 快速开始
1. 解压部署包到目标服务器
2. 运行安装脚本: `./install.sh`
3. 编辑配置文件: `nano .env`
4. 启动系统: `./deploy.sh install`
## 文档
- 部署指南: `docs/部署指南.md`
- 离线部署指南: `docs/离线部署指南.md`
- 故障排除: `docs/故障排除.md`
## 支持
如有问题,请参考故障排除文档或联系技术支持。
README_EOF
# 创建版本信息
cat > "$PACKAGE_DIR/VERSION" << 'VERSION_EOF'
QAUP 系统离线部署包
版本: 1.0.1
构建时间: $(date)
包含组件:
- QAUP 应用 (Spring Boot)
- PostgreSQL 数据库 (PostGIS)
- Redis 缓存
- Nginx 反向代理
VERSION_EOF
# 打包
echo "打包部署包..."
tar -czf "${PACKAGE_NAME}.tar.gz" "$PACKAGE_DIR"
# 生成校验和
echo "生成校验和..."
sha256sum "${PACKAGE_NAME}.tar.gz" > "${PACKAGE_NAME}.tar.gz.sha256"
# 清理临时目录
rm -rf "$PACKAGE_DIR"
echo ""
echo "离线部署包创建完成:"
echo " 文件: ${PACKAGE_NAME}.tar.gz"
echo " 大小: $(du -sh ${PACKAGE_NAME}.tar.gz | cut -f1)"
echo " 校验: ${PACKAGE_NAME}.tar.gz.sha256"
echo ""
EOF
chmod +x create-offline-package.sh
# 运行打包脚本
./create-offline-package.sh
# 查看生成的文件
ls -lh qaup-offline-deploy-*.tar.gz
```
**离线部署包包含:**
- Docker镜像文件images/
- 配置文件config/
- 部署脚本scripts/
- 文档docs/
- 镜像导入脚本
- 校验和文件
### 阶段二:离线部署(在客户内网环境中进行)
#### 1. 传输部署包
@ -228,8 +90,11 @@ cd qaup-offline-deploy-*
#### 3. 运行离线安装
```bash
# 运行安装脚本
./install.sh
# 导入镜像
sh ./scripts/load-images.sh
# 初始化配置
sh ./scripts/deploy.sh init
```
安装脚本将:
@ -263,7 +128,7 @@ NGINX_PORT=80
```bash
# 一键部署
./deploy.sh install
sh ./scripts/deploy.sh install
```
## 离线环境特殊配置
@ -308,15 +173,8 @@ sudo ufw enable
在有网络的环境中:
```bash
# 构建新版本镜像
./docker/prepare-offline-images.sh
# 创建更新包
tar -czf qaup-update-$(date +%Y%m%d).tar.gz \
offline-deploy/images/ \
docker-compose*.yml \
config/ \
docker/
# 构建新版本镜像(会自动创建更新包)
sh ./deploy/docker/prepare-offline-images.sh
```
### 2. 应用更新
@ -325,19 +183,19 @@ tar -czf qaup-update-$(date +%Y%m%d).tar.gz \
```bash
# 备份当前配置
./docker/config-manager.sh backup
sh ./docker/config-manager.sh backup
# 停止服务
./deploy.sh stop
sh ./deploy.sh stop
# 解压更新包
tar -xzf qaup-update-*.tar.gz
tar -xzf qaup-offline-deploy-*.tar.gz
# 导入新镜像
./docker/load-images.sh
sh ./scripts/load-images.sh
# 启动服务
./deploy.sh start
sh ./deploy.sh start
```
## 离线监控
@ -346,17 +204,17 @@ tar -xzf qaup-update-*.tar.gz
```bash
# 启动本地监控
./docker/monitor.sh watch 60
sh ./docker/monitor.sh watch 60
# 设置告警监控
./docker/alert-manager.sh monitor 300 &
sh ./docker/alert-manager.sh monitor 300 &
```
### 2. 日志管理
```bash
# 配置日志轮转
./docker/log-manager.sh setup
sh ./docker/log-manager.sh setup
# 定期清理日志
echo "0 2 * * * /opt/qaup/docker/log-manager.sh cleanup 30" | crontab -
@ -366,30 +224,14 @@ echo "0 2 * * * /opt/qaup/docker/log-manager.sh cleanup 30" | crontab -
### 1. 数据备份
使用内置的备份脚本:
```bash
# 创建备份脚本
cat > backup-offline.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/backup/qaup/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
# 备份数据库
docker exec qaup-postgres pg_dump -U postgres qaup | gzip > "$BACKUP_DIR/database.sql.gz"
# 备份配置文件
tar -czf "$BACKUP_DIR/config.tar.gz" .env config/ docker/
# 备份上传文件
tar -czf "$BACKUP_DIR/uploads.tar.gz" data/uploads/
echo "备份完成: $BACKUP_DIR"
EOF
chmod +x backup-offline.sh
# 手动备份
sh ./docker/backup-restore.sh backup
# 设置定时备份
echo "0 1 * * * /opt/qaup/backup-offline.sh" | crontab -
echo "0 1 * * * /opt/qaup/docker/backup-restore.sh backup" | crontab -
```
### 2. 系统备份
@ -435,10 +277,10 @@ docker network ls
```bash
# 验证配置文件
./docker/config-manager.sh validate
sh ./docker/config-manager.sh validate
# 重新初始化配置
./docker/config-manager.sh init
sh ./docker/config-manager.sh init
```
## 安全考虑
@ -501,26 +343,17 @@ sudo sysctl -p
### 日常维护
使用内置的运维脚本:
```bash
# 创建维护脚本
cat > daily-maintenance.sh << 'EOF'
#!/bin/bash
# 系统状态检查
sh ./docker/monitor.sh status
# 检查系统状态
./docker/monitor.sh status
# 系统清理
sh ./docker/ops-manager.sh cleanup
# 检查磁盘空间
df -h
# 清理临时文件
docker system prune -f
# 备份数据
./backup-offline.sh
EOF
chmod +x daily-maintenance.sh
echo "0 6 * * * /opt/qaup/daily-maintenance.sh" | crontab -
# 设置定时维护
echo "0 6 * * * /opt/qaup/docker/ops-manager.sh daily-maintenance" | crontab -
```
### 定期检查

View File

@ -17,6 +17,7 @@
- **Docker**: 20.10 或更高版本
- **Docker Compose**: 1.29 或更高版本
- **其他工具**: curl, wget, unzip
- **Python环境**(可选,用于开发工具): Python 3.6+, pip
## 安装 Docker 和 Docker Compose
@ -475,6 +476,25 @@ docker system prune -f
./docker/config-manager.sh backup
```
## 可选工具安装
### Python 开发工具(可选)
如果需要使用项目中的Python开发工具如mock server可以安装Python环境
```bash
# 安装Python和pip
sudo apt update
sudo apt install python3 python3-pip
# 安装Flask用于mock server
pip3 install flask
# 运行mock server开发测试用
cd tools
python3 mock_server.py
```
## 联系支持
如果遇到无法解决的问题,请提供以下信息: