问题


     今天开发更新了代码,Jenkins在自动构建打包时报错了,查看日志后发现Dockerfile在执行pipenv install --deploy --system --ignore-pipfile时报错了,报错如下:

即pypi阿里源里面没有protobuf==3.12.1的包,匹配不到所以无法安装。

解决


     昨天在解决时区问题时发现python-alpine是一个极简的镜像,所以这次依旧怀疑是环境的问题,所以我在自己的centos机器是那个尝试使用阿里源安装这个版本的依赖:

   结果可以看出centos机器是可以从阿里源安装这个版本的依赖的,随后又在现版本的后端容器里尝试手动安装这个包:

   发现依旧无法安装这个版本的依赖,然后尝试安装3.12.2版本的依赖:

    此时问题解决可能需要让开发将版本进行调整适应容器,但为了比较有说服力,我使用python:3.7-alpine镜像起了一个容器,将下载的protobuf-3.12.1.whl文件挂载进去看能否安装成功,结果如下:

   结果可以看到alpine系统不支持protobuf-3.12.1版本的依赖,解决的方案要么换镜像,要么修改版本,与开发协商后更换版本不影响程序的运行,故又开发修改依赖版本,问题解决!!


 注意:python-alpine是一个极简的镜像,只有6.5M左右,但在选择使用时会产生比较多的问题,所以如果系统存储够用或者公司对镜像大小没有限制的话,还是建议使用比较完整的镜像来跑程序,这样会省事很多。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐