M1 MacBook上执行serverless package命令失败求助
解决M1 Mac上Serverless Python Requirements插件Docker挂载Socket报错问题
问题原因
M1 Mac上serverless-python-requirements插件默认会挂载宿主机的/tmp目录到Docker容器,但该目录下的com.apple.launchd.*路径包含Socket文件,Docker无法挂载Socket类型文件,导致执行sls package时触发operation not supported错误。
解决方案
1. 排除Socket路径的Docker挂载
在serverless.yml的custom.pythonRequirements配置中添加dockerIgnore规则,跳过问题路径:
custom: pythonRequirements: dockerIgnore: - '/private/tmp/com.apple.launchd*'
2. 指定自定义临时目录
让插件使用项目内的临时目录替代系统/tmp,避免挂载包含Socket的路径:
custom: pythonRequirements: useTmpDir: true tmpDir: './.serverless/tmp'
执行前确保创建该目录:mkdir -p .serverless/tmp
3. 禁用Docker(仅适用于纯Python依赖)
如果你的项目依赖都是纯Python包(无需编译二进制扩展),可以直接禁用插件的Docker功能:
custom: pythonRequirements: useDocker: false
4. 升级插件到最新版本
旧版本的serverless-python-requirements可能存在M1 Mac兼容性问题,强制升级插件:
sls plugin install -n serverless-python-requirements --force
验证
修改配置后重新执行你的打包脚本:
rm -fr requirements.txt build pip-compile sls package --package ./build
内容的提问来源于stack exchange,提问作者user3535147
相关产品推荐
相关产品推荐

