Files
FunMD_Convert/docker本地构建与打包.md

142 lines
4.5 KiB
Markdown
Raw Permalink Normal View History

2026-01-07 17:18:26 +08:00
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`