docker - docker 镜像上的 python 和 oracle 客户端

标签 docker cx-oracle oracleclient

我想用oracle客户端和python的cx_oracle创建一个docker镜像。我正在使用多阶段 docker 来构建镜像,但由于 cx_oracle 无法找到 oracle 客户端库,我缺少一个 env 变量。

FROM oraclelinux:7-slim
RUN  curl -o /etc/yum.repos.d/public-yum-ol7.repo https://yum.oracle.com/public-yum-ol7.repo && \
     yum-config-manager --enable ol7_oracle_instantclient && \
     yum -y install oracle-instantclient18.3-basic oracle-instantclient18.3-devel oracle-instantclient18.3-sqlplus && \
     rm -rf /var/cache/yum && \
     echo /usr/lib/oracle/18.3/client64/lib > /etc/ld.so.conf.d/oracle-instantclient18.3.conf && \
     ldconfig
ENV PATH=$PATH:/usr/lib/oracle/18.3/client64/bin    

FROM python:slim
COPY ./requirement.txt ./requirement.txt
RUN pip install -r ./requirement.txt
COPY --from=0 /usr/lib/oracle/18.3/client64/lib /root/usr/lib/oracle/18.3/client64/lib
COPY --from=0 /usr/lib/oracle/18.3/client64/bin /root/usr/lib/oracle/18.3/client64/bin
ENV PATH=$PATH:/root/usr/lib/oracle/18.3/client64/bin:/root/usr/lib/oracle/18.3/client64/lib
ENV ORACLE_HOME=/root/usr/lib/oracle/18.3/client64/:$ORACLE_HOME
ENV LD_LIBRARY_PATH=/root/usr/lib/oracle/18.3/client64/:$LD_LIBRARY_PATH
RUN echo $PATH
RUN echo $ORACLE_HOME
RUN chmod 755 /root/usr/lib/oracle/18.3/client64/lib/*
RUN ls -l /root/usr/lib/oracle/18.3/client64/lib
CMD ["chmod","755","/root/usr/lib/oracle/18.3/client64/lib/*"]
CMD ["ls", "-l" ,"/root/usr/lib/oracle/18.3/client64/lib"]
CMD ["python","test.py"]
下面是错误
DPI-1047: 64-bit Oracle Client library cannot be loaded: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux

最佳答案

关于docker - docker 镜像上的 python 和 oracle 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53651531/

相关文章:

Python 连接 Oracle 数据库

linux - 在 Ubuntu 中安装 oracle imp/exp

.net - 如何在不安装Oracle客户端的情况下连接Oracle与odp.net

django - Docker连接错误 'Connection broken by NewConnectionError'

docker - 用于确定性 CI 构建的可移植 docker 守护进程

java - docker 容器中的 Eureka 客户端

c# - ODAC 和 C#-TNS : Connect timeout occurred - Connecting only through VS2005 debugger

docker - 在多阶段 docker 构建中保留 ENV

python - python中的sql查询——调试附加值

python - python和oracle处理异常握手的正确方法