背景
基于supervisor+nginx+uWSGI+ flask的一个项目,在docker镜像启动过程中遇到现在的报错问题。其中supervisor的作用在于进程管理,可以对管理的进程进行重启尝试等操作。
在docker镜像制作时,通过apt-get安装了supervisor。
错误代码
pkg_resources.DistributionNotFound: The 'supervisor==3.3.1' distribution was not found and is required by the application
报错显示:在应用启动时需要supervisor==3.3.1,但却没找到。
错误原因
首先查询了下supervisor==3.3.1这个版本匹配的是python2.7,无法适用于python3。
在docker的基础镜像中分别查看了python和python3的软链接,都指向了python3.7,怀疑是python的软链接造成的。
根据以上分析,supervisor启动时依赖python的软链接,且软链接要指向python2.7版本。
解决方法
1.进入基础镜像
docker run -it --name [自定义容器名] [基础镜像名] /bin/bash
2.修改python软链接
1.linux的软链接存放位置
cd /usr/bin
2.查看现有python的软链接指向的版本
ls -al *python*
3.删除旧的软链接
rm python
4.建立新的软链接
ln -s python2.7 python
5.查看软链接版本
python -V
3.保存镜像
docker commit [自定义容器名] [新的镜像名]