准备工作

首先寻找个更基础的镜像,怎么选参考了下面这个链接的文章:
https://pythonspeed.com/articles/base-image-python-docker-images/

  1. docker pull python:3.8.3-slim-buster

下载Oracle的客户端
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
这次选的是的
image.png
需要登录Oralce的账户才能下载,先在windows下下载zip包,然后用pscp 传输到linux主机

  1. pscp D:\Downloads\instantclient-basic-linux.x64-12.2.0.1.0.zip root@192.168.8.236:/tmp

linux宿主上运行之前下载的镜像

  1. docker run -it python:3.8.3-slim-buster /bin/sh

Debian 的软件源配置文件是 /etc/apt/sources.lis
修改为清华大学的源,因为容器内没有找到文本编辑器,我是宿主机编辑好拷贝到容器

  1. # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
  2. deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
  3. # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
  4. deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
  5. # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
  6. deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
  7. # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
  8. deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
  9. # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free

更新apt软件包列表,安装unzip

  1. apt update
  2. apt upgrade

修改pip的安装源为国内源

  1. pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

部署Oracle客户端

首先执行 docker ps 查看目标容器的id,然后拷贝之前下载的Oracle客户端文件到容器内解压及配置
宿主机运行

  1. docker cp /tmp/instantclient-basic-linux.x64-12.2.0.1.0.zip 5b316b53a0df:/opt

容器内运行

  1. cd /opt
  2. mkdir -p /opt/oracle
  3. mv instantclient-basic-linux.x64-12.2.0.1.0.zip ./oracle
  4. cd /opt/oracle
  5. apt install unzip
  6. unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
  7. rm instantclient-basic-linux.x64-12.2.0.1.0.zip
  8. apt install libaio1
  9. sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"
  10. ldconfig
  11. export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_3:$LD_LIBRARY_PATH
  12. python -m pip install cx_Oracle --upgrade

宿主机执行

  1. docker commit 5b316b53a0df python-oracle
  2. docker tag python-oracle ***.com/arch/python:3.8.3-slim-buster-oracle
  3. docker push ***.com/arch/python:3.8.3-slim-buster-oracle