# Docker镜像打包和部署工具 本目录包含用于Docker镜像打包和OpenEuler服务器部署的完整工具集。 ## 脚本概览 ### 核心脚本 1. **export-images.sh** - Docker镜像导出脚本 2. **compress-and-verify.sh** - 镜像压缩和完整性检查脚本 3. **import-and-verify.sh** - 镜像导入和验证脚本 4. **deploy-to-openeuler.sh** - OpenEuler服务器部署脚本 5. **one-click-deploy.sh** - 一键部署脚本 ### 文档 - **DEPLOYMENT_GUIDE.md** - 详细部署指南 - **PACKAGING_README.md** - 本文件 ## 快速开始 ### 1. 导出镜像 ```bash # 基本导出 ./docker/export-images.sh # 导出并压缩,验证完整性 ./docker/export-images.sh -c -v # 导出到指定目录 ./docker/export-images.sh -o /path/to/export -c -v ``` ### 2. 压缩和验证 ```bash # 压缩现有镜像文件 ./docker/compress-and-verify.sh # 仅验证文件完整性 ./docker/compress-and-verify.sh --verify-only # 解压缩文件 ./docker/compress-and-verify.sh --uncompress ``` ### 3. 导入镜像 ```bash # 导入镜像文件 ./docker/import-and-verify.sh /path/to/images # 强制导入并测试 ./docker/import-and-verify.sh -f --test-run # 仅验证不导入 ./docker/import-and-verify.sh --verify-only ``` ### 4. 部署到OpenEuler ```bash # 全新部署 sudo ./docker/deploy-to-openeuler.sh /path/to/images # 更新现有部署 sudo ./docker/deploy-to-openeuler.sh -u /path/to/images # 备份并部署 sudo ./docker/deploy-to-openeuler.sh -b /path/to/images ``` ### 5. 一键部署 ```bash # 导出镜像 ./docker/one-click-deploy.sh export -c -v # 部署到服务器 ./docker/one-click-deploy.sh deploy --server 192.168.1.100 # 完整流程 ./docker/one-click-deploy.sh full -c --server 192.168.1.100 ``` ## 典型工作流程 ### 开发环境 → 生产环境 1. **在开发环境导出镜像** ```bash ./docker/export-images.sh -c -v -o ./docker-images ``` 2. **传输到生产服务器** ```bash scp -r docker-images/ user@server:/tmp/ ``` 3. **在生产服务器部署** ```bash sudo ./docker/deploy-to-openeuler.sh /tmp/docker-images ``` ### 离线部署流程 1. **准备镜像包** ```bash ./docker/export-images.sh -c -v ./docker/compress-and-verify.sh -c 9 ``` 2. **物理传输到目标环境** 3. **导入和部署** ```bash ./docker/import-and-verify.sh -f --test-run sudo ./docker/deploy-to-openeuler.sh --skip-images ``` ## 脚本选项说明 ### export-images.sh 选项 - `-c, --compress`: 启用gzip压缩 - `-v, --verify`: 导出后验证完整性 - `-o, --output DIR`: 指定导出目录 - `--custom-images`: 导出指定镜像列表 - `--skip-build`: 跳过镜像构建 ### compress-and-verify.sh 选项 - `-c, --compress-level N`: 压缩级别 (1-9) - `-k, --keep-original`: 保留原始文件 - `-v, --verify-only`: 仅验证不压缩 - `-u, --uncompress`: 解压缩文件 - `--parallel N`: 并行处理数量 ### import-and-verify.sh 选项 - `-v, --verify-only`: 仅验证不导入 - `-f, --force`: 强制导入覆盖现有镜像 - `-c, --check-manifest`: 检查清单文件 - `--skip-compatibility`: 跳过兼容性检查 - `--test-run`: 导入后运行测试 ### deploy-to-openeuler.sh 选项 - `-d, --deploy-dir DIR`: 部署目录 - `-b, --backup`: 部署前备份 - `-u, --update`: 更新现有部署 - `-r, --rollback`: 回滚到上一版本 - `--skip-docker-install`: 跳过Docker安装 - `--dry-run`: 仅显示操作不执行 ## 生成的文件 ### 导出过程生成 - `docker-images/` - 镜像文件目录 - `images-manifest.txt` - 镜像清单文件 - `import-images.sh` - 自动生成的导入脚本 - `export.log` - 导出日志 ### 部署过程生成 - `/opt/knowledge-base/` - 默认部署目录 - `.env` - 环境配置文件 - `storage/` - 持久化存储目录 - `/var/log/knowledge-base-deploy.log` - 部署日志 ## 故障排除 ### 常见问题 1. **权限错误** ```bash sudo chown -R $USER:$USER docker-images/ chmod +x docker/*.sh ``` 2. **Docker未运行** ```bash sudo systemctl start docker sudo systemctl enable docker ``` 3. **磁盘空间不足** ```bash docker system prune -a df -h ``` 4. **网络连接问题** ```bash ping target-server ssh user@target-server ``` ### 日志查看 ```bash # 查看导出日志 tail -f docker-images/export.log # 查看部署日志 sudo tail -f /var/log/knowledge-base-deploy.log # 查看Docker日志 docker compose logs -f ``` ## 最佳实践 1. **始终验证镜像完整性** 2. **在生产部署前进行测试** 3. **定期备份重要数据** 4. **监控系统资源使用** 5. **保持脚本和文档更新** ## 支持的平台 - **源平台**: Linux/macOS (开发环境) - **目标平台**: OpenEuler 20.03 LTS+ - **架构**: x86_64 (amd64) - **Docker**: 20.10+ - **Docker Compose**: 2.0+ --- 更多详细信息请参考 `DEPLOYMENT_GUIDE.md`。