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

142 lines
4.5 KiB
Markdown
Raw Permalink 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.

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`