问题:
项目以docker容器的方式进行部署,负责前端的docker容器webui一直频繁启动,为启动失败的状态。
问题分析:
- 启动方式为docker run --restart=always,这个配置决定了它的重复启动,但是每次都是失败的
- docker logs查看webui容器的日志,看不到任何信息,说明没走到这一步就失败了
- 通过/var/log/messages查看系统日志,也并没有什么收获
- 可以确定的是,在本地环境是ok的,在客户环境起不来,那么就一定和环境有关系。既然代码没有问题,那么会不会是基础镜像有问题呢
- 基础镜像为openresty/openresty:1.11.2.5-alpine,在dockerhub中搜索openresty,查看其所有的tag信息,发现nosse42的字样,那么就有理由怀疑是不是它的原因
- 在dockerhub中拉取带nosse42的基础镜像和不带nosse42的基础镜像,分别启动发现nosse42的基础镜像可以启动成功,没有标记nosse42的镜像启动不了,和项目为一个现象。这就找到了问题
- 查询相关资料发现,openresty会使用到openssl,而openssl有两种加密方式,一种依赖于硬件的sse42一种不依赖。所以查看本地cpu信息如下:
而出问题的环境如下:
总结:
这样定位到问题后就有了相应的解决思路。解决方式为换硬件机器或者更新基础镜像。