Files
FunMD_Convert/docker本地构建与打包.md
2026-01-07 17:18:26 +08:00

4.5 KiB
Raw Blame History

toolName: search_by_regex

status: success

query: StaticFiles

toolName: view_files

status: success

filePath: /Users/fanyang/Desktop/FunMD_Convert/docling/app/server.py

toolName: view_folder

status: success

/Users/fanyang/Desktop/FunMD_Convert

toolName: view_files

status: success

filePath: /Users/fanyang/Desktop/FunMD_Convert/Dockerfile

toolName: view_folder

status: success

/Users/fanyang/Desktop/FunMD_Convert

toolName: edit_file_update

status: success

filePath: /Users/fanyang/Desktop/FunMD_Convert/Dockerfile

changes:

toolName: ApplyPatch

status: failed

toolName: write_to_file

status: success

filePath: /Users/fanyang/Desktop/FunMD_Convert/package_offline.sh

content: undefined

toolName: todo_write

status: success

Todos updated: 2 items

下面是按你给出的参考流程,结合当前项目的启动方式(后端 FastAPI 同时托管前端 /ui),进行“打包 → 传输 → 加载 → 启动”的完整方案。

打包镜像

  • 在项目根目录执行:
    • 构建镜像:docker build -t funmd-convert:latest .
    • 保存镜像:docker save funmd-convert:latest -o FunMD_Convert.tar
    • 查看大小:ls -lh FunMD_Convert.tar
    • 计算校验:shasum -a 256 FunMD_Convert.tar | awk '{print $1}'
  • 也可以直接用脚本:
    • chmod +x package_offline.sh && ./package_offline.sh
    • 该脚本会自动构建、生成 FunMD_Convert.tar、打印大小与 sha256,并给出服务器端加载和运行提示

离线服务器加载

  • 复制镜像包到服务器:scp FunMD_Convert.tar user@server:/opt/FunMD_Convert/
  • 加载镜像:docker load -i /opt/FunMD_Convert/FunMD_Convert.tar
  • 验证镜像:docker images | grep funmd-convert

启动容器

  • 启动后端(同时托管前端 /ui
    docker run -d -p 8000:8000 --name FunMD_Convert --restart unless-stopped funmd-convert:latest
  • 访问地址:
    • 后端健康检查:http://<服务器IP>:8000/health
    • 前端页面:http://<服务器IP>:8000/ui/
    • API 基地址:http://<服务器IP>:8000/api/…

MinIO 配置(首次部署或变更时)

  • 通过后端接口配置 MinIO确保 public 指向内网可达的 9000 端口):
    • curl -X POST -F endpoint=10.9.35.31:9000 -F public=http://10.9.35.31:9000 -F access=<AK> -F secret=<SK> -F bucket=file-cms -F secure=false -F public_read=true http://<服务器IP>:8000/config/minio
  • 验证连接:curl -X POST -F endpoint=10.9.35.31:9000 -F bucket=file-cms -F access=<AK> -F secret=<SK> -F secure=false http://<服务器IP>:8000/config/minio/test

说明与对齐

  • 镜像内已包含:
    • 后端 FastAPI 服务(uvicorn 启动,端口 8000
    • 前端已构建的静态资源,后端自动挂载为 /ui/assets
    • Docling 模型离线预下载(构建阶段执行),容器内可直接使用
  • 前端请求基座:
    • 当用后端托管前端时,前端自动回退到 http://<当前主机>:8000,无需额外配置
  • 中文路径与 URL 显示:
    • 后端已修复 Zip/Tar 解压中文“乱码”,同时返回 minio_url(安全编码)和 minio_url_display(中文可读),前端展示文本用后者,资源实际加载用前者

推荐的打包校验清单

  • 构建完成后:
    • ls -lh offline-funmd-convert.tar 确认大小合理(包含模型与前端)
    • shasum -a 256 offline-funmd-convert.tar | awk '{print $1}' 记录校验值
  • 服务器端:
    • docker load -i ...docker images | grep offline-funmd-convert 显示镜像
    • docker ps 容器运行后访问 http://<服务器IP>:8000/health{"status":"ok"}

如果你希望镜像命名和示例完全对齐项目名(如 FunMD_Convert),只需在构建与运行命令中替换为:

  • 构建:docker build -t funmd-convert:latest .
  • 保存:docker save funmd-convert:latest -o FunMD_Convert.tar
  • 加载:docker load -i /opt/FunMD_Convert/FunMD_Convert.tar
  • 启动:docker run -d -p 8000:8000 --name FunMD_Convert --restart unless-stopped funmd-convert:latest