Files
KnowledgeBase/docker/PACKAGING_README.md
lizhuoran 3c206e9e06 feat: 新增 Docker 部署支持、Swoole/Octane 集成及相关优化
- 添加 Dockerfile 与多套 docker-compose 配置(开发/生产环境)
- 集成 Laravel Octane (Swoole) 提升性能
- 新增健康检查、监控脚本及部署文档
- 新增 Docker 镜像离线导入包(MySQL/Redis/Meilisearch)
- 优化文档转换、预览服务及队列任务
- 添加 CreateAdminUser 命令与路由健康检查接口
- 新增 Swoole 队列兼容性测试套件

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 15:51:19 +08:00

4.8 KiB

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. 导出镜像

# 基本导出
./docker/export-images.sh

# 导出并压缩,验证完整性
./docker/export-images.sh -c -v

# 导出到指定目录
./docker/export-images.sh -o /path/to/export -c -v

2. 压缩和验证

# 压缩现有镜像文件
./docker/compress-and-verify.sh

# 仅验证文件完整性
./docker/compress-and-verify.sh --verify-only

# 解压缩文件
./docker/compress-and-verify.sh --uncompress

3. 导入镜像

# 导入镜像文件
./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

# 全新部署
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. 一键部署

# 导出镜像
./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. 在开发环境导出镜像

    ./docker/export-images.sh -c -v -o ./docker-images
    
  2. 传输到生产服务器

    scp -r docker-images/ user@server:/tmp/
    
  3. 在生产服务器部署

    sudo ./docker/deploy-to-openeuler.sh /tmp/docker-images
    

离线部署流程

  1. 准备镜像包

    ./docker/export-images.sh -c -v
    ./docker/compress-and-verify.sh -c 9
    
  2. 物理传输到目标环境

  3. 导入和部署

    ./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. 权限错误

    sudo chown -R $USER:$USER docker-images/
    chmod +x docker/*.sh
    
  2. Docker未运行

    sudo systemctl start docker
    sudo systemctl enable docker
    
  3. 磁盘空间不足

    docker system prune -a
    df -h
    
  4. 网络连接问题

    ping target-server
    ssh user@target-server
    

日志查看

# 查看导出日志
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