docker镜像启动报错:libclntsh.so.11.1: cannot open shared object file
一、问题描述docker镜像打包好了,准备运行。这是一个python项目,需要链接oracle数据库,用到了cx_Oracle模块,环境变量已经配置好,而且如果直接将项目复制到对应的容器中,在容器中启动pyton项目也能在外面访问的到。但是,将项目用dockerfile打包成镜像,再次启动就报错,libclntsh.so.11.1: cannot open shared object file..
·
一、问题描述
docker镜像打包好了,准备运行。这是一个python项目,需要链接oracle数据库,用到了cx_Oracle模块,环境变量已经配置好,而且如果直接将项目复制到对应的容器中,在容器中启动pyton项目也能在外面访问的到。但是,将项目用dockerfile打包成镜像,再次启动就报错,libclntsh.so.11.1: cannot open shared object file,这个文件其实就在$ORACLE_HOME/11.2.0/lib这个文件夹下面,而且在这两个ORACLE_HOME
and LD_LIBRARY_PATH环境变量中都进行了配置,还是不行。
最后在stack overflow中找到了解决方案。
二、解决方案及说明
- 解决方案:
- 进入到etc/ld.so.conf.d/目录下
- 新建文件oracle.conf
- 然后将libclntsh.so.11.1所在的路径填入文件中,echo /opt/oracle/installclient/11.2.0/lib > oralce.conf
- 执行命令ldconfig
以上就是解决方案,但是为什么,其实就是将oracle的共享仓库.../lib加入到linux的共享仓库中。让linux启动的时候能够找到。这里涉及到了动态链接库的相关设置问题,请参考下面的文章。
参考:
libclntsh.so.11.1: cannot open shared object file
更多推荐
已为社区贡献2条内容
所有评论(0)