当试图运行我的码头映像时,会出现以下错误:cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "oracle_lib/instantclient_21_4/libclntsh.so: file too short"
这是我的文件
FROM python:3.9
WORKDIR /app
RUN apt-get update -y
RUN apt-get install libaio1
COPY ../requirements.txt /app
RUN pip install -r requirements.txt
COPY ./ /app
ENV PYTHONPATH "${PYTHONPATH}:/app"
ENV PATH "${PATH}:/app"
EXPOSE 5000
CMD ["python", "products/product_db.py"]
product_db.py运行以下代码来连接到数据库:cx_Oracle.init_oracle_client(lib_dir="oracle_lib/instantclient_21_4", config_dir="oracle_config/Wallet_pricedb")
,它在我的计算机上运行linux时运行的非常好,并且没有显示此错误。
我已经尝试手动将所需的环境变量(如$TNS_ADMIN、$ORACLE_HOME、$LD_LIBRARY_PATH )设置到正确的位置(在vs代码中尝试通过linux连接到甲骨文数据库时也是如此),但是在运行坞映像时也会出现同样的错误。我还遵循了cx_Oracle 8安装指南的所有步骤,仍然收到相同的错误。
发布于 2022-01-14 22:38:58
具有即时客户端的
cx_Oracle.init_oracle_client(lib_dir="oracle_lib/instantclient_21_4")
的唯一作用就是立即加载库。在进程开始之前,您仍然需要确保这些库在系统库搜索路径(例如LD_LIBRARY_PATH,或通过ldconfig
)中。但是,请确保您通过的目录与系统搜索路径中使用的目录相同,否则可能会出现奇怪的行为或错误。cx_Oracle.init_oracle_client(config_dir="oracle_config/Wallet_pricedb")
内部设置TNS_ADMIN
,因此它将覆盖变量的任何值。
https://stackoverflow.com/questions/70706265
复制相似问题