现象
使用docker run -p 6008:6008 --name=m3e-large-api stawky/m3e-large-api命令启动容器,容器显示启动成功,但内部抛出报错:
No sentence-transformers model found with name ./moka-ai_m3e-large. Creating a new one with MEAN pooling.
本次加载模型的设备为CPU.随后出现服务启动崩溃,报错栈顶为uvicorn服务启动失败的相关日志。
可能原因
从报错文本分析,核心问题是容器内无法找到指定路径的sentence-transformers模型文件。该镜像默认尝试加载./moka-ai_m3e-large模型,但该模型目录未存在于容器的当前工作目录中,导致模型加载失败,进而引发服务启动崩溃。
排查步骤
- 进入运行异常的容器内部,执行文件列表命令,确认当前目录是否存在
moka-ai_m3e-large模型目录 - 核对原始启动命令,确认是否遗漏了本地模型目录的挂载配置
- 在容器内执行
pwd命令,确认当前工作目录与模型文件预期存放路径是否匹配 - 确认所用镜像是否自带该模型文件,若未自带则需手动挂载本地模型
解决与验证
解决方法:
- 提前将对应模型文件下载至本地指定目录
- 修改启动命令,添加挂载卷参数,将本地模型目录映射到容器内的
./moka-ai_m3e-large路径,示例命令:docker run -p 6008:6008 -v /本地模型目录绝对路径:/app/moka-ai_m3e-large --name=m3e-large-api stawky/m3e-large-api,请将/本地模型目录绝对路径替换为实际的本地模型存放路径 - 重新启动容器,等待日志加载完成,确认无
No sentence-transformers model found报错信息 - 通过测试6008端口的方式,确认服务正常运行