Oracle+Python环境搭建(docker镜像制作)

Python调用cx_oracle模块时提示缺少lib***,为解决该问题特制作个docker镜像,以下是dockerfile,分享给大家,如有不足之处,欢迎各位大佬指点!

附下载链接:(Oracle_instantclient-basic-linux.x64-11.2.0.4.0)

	https://download.oracle.com/otn/linux/instantclient/11204/instantclient-basic-linux.x64-11.2.0.4.0.zip

dockerfile

FROM python:3.9.23-slim-trixie

# 打标签,说明作者,便于故障排查
LABEL maintainter="Huahf."

# 设置环境变量
ENV TZ=Asia/Shanghai
ENV ORACLE_HOME=/opt/oracle_base_client/instantclient_11_2
ENV LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
ENV PATH=$ORACLE_HOME:$PATH

# 更换debian源为华为源,提升国内下载速度
RUN cp -a /etc/apt/sources.list.d/debian.sources  /etc/apt/sources.list.d/debian.sources.bak &&\
 sed -i "s@http://ftp.debian.org@https://mirrors.huaweicloud.com@g" /etc/apt/sources.list.d/debian.sources &&\
 sed -i "s@http://security.debian.org@https://mirrors.huaweicloud.com@g" /etc/apt/sources.list.d/debian.sources &&\
 sed -i 's/deb.debian.org/mirrors.huaweicloud.com/g' /etc/apt/sources.list.d/debian.sources &&\
 apt-get install apt-transport-https ca-certificates &&\
 apt-get clean && apt-get update &&\
 apt install -y apt-utils ntpsec-ntpdate &&\
#  ntpdate cn.pool.ntp.org &&\
 date

# 添加Oracle_base_client包到opt文件夹(此处示范的为Oracle11.2版本)
ADD instantclient_11_2/ /opt/oracle_base_client/instantclient_11_2/

# 创建一些软连接(快捷方式)、下载必要的lib包
RUN cd $ORACLE_HOME &&\
 ln -sf libclntsh.so.11.1 libclntsh.so &&\
 ln -sf libocci.so.11.1 libocci.so &&\
 apt-get install -y libaio* &&\
 rm -rf /var/lib/aptlists/* &&\
 cd /lib/x86_64-linux-gnu/ &&\
 ln -sf libaio.so.1t64 libaio.so.1 


# 更换pip官方源为华为pypi源
RUN pip config --user set global.index https://mirrors.huaweicloud.com/repository/pypi &&\
 pip config --user set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple &&\
 pip config --user set global.trusted-host mirrors.huaweicloud.com

# 设置工作目录
WORKDIR /opt/app/

CMD ["python3"]

构建命令

docker build -f dockerfile_Oracle -t oracle_base_client:11.2 . --no-cache

备注:

记得把Oracle_base_client包放在dockerfile所在的文件夹下

更多推荐