macOS Sonoma下Docker容器生成Embedding时退出码139问题求助
Docker容器中Chroma生成Embedding失败(退出码139)- macOS Sonoma环境问题
问题描述
升级至macOS Sonoma 14.0后,在Docker容器中使用Chroma生成Embedding时失败,执行docker-compose up --index embedding-test后容器始终以退出码139终止。
异常现象对比
- 相同Docker容器在运行Monterey系统的Mac及EC2服务器上可正常运行
- 本地Python虚拟环境(venv)中直接运行相同脚本可成功生成Embedding
环境版本信息
- Chroma v0.4.13
- macOS 14.0 Sonoma
- Docker Desktop v4.24.0
- 基础镜像:
python:3.11.4-slim-bookworm
已尝试的排查操作
- 清理Docker系统、容器、镜像
- 卸载并重装Docker Desktop
- 以上操作均未解决问题
附相关文件
- Dockerfile
- 测试脚本:
embedding_test.py - 依赖清单:
requirements.txt
解决方案
退出码139对应段错误(Segmentation Fault),结合Apple Silicon+Sonoma环境,大概率是Docker架构模拟或Chroma底层依赖兼容性问题,可按以下步骤处理:
启用Docker Rosetta模拟
打开Docker Desktop设置 → Features in development,勾选"Use Rosetta for x86/amd64 emulation on Apple Silicon",重启Docker后重新构建镜像并运行容器。强制指定镜像架构
在Dockerfile开头添加平台参数,强制以amd64架构构建:FROM --platform=linux/amd64 python:3.11.4-slim-bookworm重新构建镜像后启动容器。
升级Chroma版本
将Chroma版本升级至v0.4.14及以上,后续版本修复了Apple Silicon环境的兼容性问题,修改requirements.txt中的版本号后重新构建镜像。更换纯Python实现的嵌入模型
若使用默认的all-MiniLM-L6-v2模型,可替换为纯PyTorch实现的版本,避免底层C扩展库的兼容性冲突。
内容的提问来源于stack exchange,提问作者ryan-serpico
相关产品推荐
相关产品推荐

