下面是使用Docker制作Python环境连接Oracle镜像的完整攻略。
准备工作
在开始制作镜像之前,需要安装以下软件:
- Docker
- Oracle Instant Client
在安装完以上软件之后,需要先编写一个Dockerfile文件,内容如下:
FROM python:3.7-slim
RUN apt-get update \
&& apt-get install -y libaio1 \
&& rm -rf /var/lib/apt/lists/*
COPY instantclient_19_3.zip /tmp/
RUN unzip /tmp/instantclient_19_3.zip -d /usr/local/ \
&& rm /tmp/instantclient_19_3.zip \
&& ln -s /usr/local/instantclient_19_3 /usr/local/instantclient
ENV ORACLE_HOME /usr/local/instantclient
ENV LD_LIBRARY_PATH /usr/local/instantclient
RUN pip install cx_Oracle
Dockerfile说明
FROM
指定了基础镜像,这里选用的是Python 3.7版本的slim版镜像,因为除了Python,我们不需要安装任何其他的软件。RUN
指令用于在镜像构建过程中执行一些命令,这里我们先更新系统,安装libaio1包,并将Oracle Instant Client复制到容器内。ENV
指令用于设置环境变量,这里设置了ORACLE_HOME和LD_LIBRARY_PATH环境变量,用于在Python中连接Oracle数据库。- 最后使用pip安装cx_Oracle驱动程序。
制作镜像
在准备好Dockerfile文件之后,执行以下命令开始制作镜像:
docker build -t python-oracle .
该命令将在当前文件夹下执行,即Dockerfile所在的文件夹下,创建名为python-oracle的镜像。
示例
下面将给出两个使用该镜像的示例。
示例一:连接Oracle数据库
import cx_Oracle
dsn_tns = cx_Oracle.makedsn('<hostname>', '<port>', '<service_name>')
conn = cx_Oracle.connect(user='<username>', password='<password>', dsn=dsn_tns)
print(conn.version)
conn.close()
其中,<hostname>
、<port>
、<service_name>
、<username>
和<password>
需要替换为实际的值。
示例二:使用Flask框架连接Oracle数据库
from flask import Flask
import cx_Oracle
app = Flask(__name__)
dsn_tns = cx_Oracle.makedsn('<hostname>', '<port>', '<service_name>')
conn = cx_Oracle.connect(user='<username>', password='<password>', dsn=dsn_tns)
@app.route('/')
def hello_world():
return conn.version
if __name__ == '__main__':
app.run()
同样,<hostname>
、<port>
、<service_name>
、<username>
和<password>
需要替换为实际的值。启动该脚本后,访问http://localhost:5000即可看到连接的Oracle数据库版本号。
至此,使用Docker制作Python环境连接Oracle镜像的攻略完整结束。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Docker制作Python环境连接Oracle镜像 - Python技术站