[英]How to identify Oracle Instant Client in a Django project?
[英]Alpine dependency hell with Oracle Instant client
我正在嘗試使用 cx_Oracle(需要 oracle 即時客戶端)從我的 Alpine Linux 容器建立 oracle 連接。 cx_oracle 不斷抱怨缺少 Oracle 即時客戶端所需的不同庫
錯誤:
con = cx_Oracle.connect('user/pass@127.0.0.1/orcl') 回溯(最近一次調用最后一次):文件“”,第 1 行,在
cx_Oracle.DatabaseError:DPI-1047:找不到 64 位 Oracle 客戶端庫:“加載共享庫 libnsl.so.1 時出錯:沒有這樣的文件或目錄(/usr/lib/libclntsh.so 需要)”。
Dockerfile:
FROM alpine-base
COPY /app /base/app
COPY requirements.txt /base
COPY instantclient_12_2.zip /base
COPY instantclient_sqlplus_12_2.zip /base
COPY run_app.py /base
COPY oratest.py /base/oratest.py
WORKDIR /base
RUN apk add libaio libnsl openssl-dev musl-dev libffi-dev && \
apk add openssl-dev && \
pip install cryptography==2.2.2 && \
apk add libressl-dev && \
pip install cx_Oracle
unzip /base/instantclient_12_2.zip && \
unzip /base/instantclient_sqlplus_12_2.zip && \
mv /base/instantclient_12_2/ /usr/lib/ && \
rm -rf /base/instantclient_12_2.zip && \
ln /usr/lib/instantclient_12_2/libclntsh.so.12.1 /usr/lib/libclntsh.so && \
ln /usr/lib/instantclient_12_2/libocci.so.12.1 /usr/lib/libocci.so && \
ln /usr/lib/instantclient_12_2/libociei.so /usr/lib/libociei.so && \
ln /usr/lib/instantclient_12_2/libnnz12.so /usr/lib/libnnz12.so
ENV ORACLE_BASE /usr/lib/instantclient_12_2
ENV LD_LIBRARY_PATH /usr/lib/instantclient_12_2
ENV TNS_ADMIN /usr/lib/instantclient_12_2
ENV ORACLE_HOME /usr/lib/instantclient_12_2
RUN pip install -r /base/requirements.txt
EXPOSE 8080
CMD [ "python", "/base/run_app.py" ]
有什么我在這里想念的嗎? 我幾乎已經完成了與 oracle 即時客戶端的依賴關系的斗爭 - 有沒有更好的方法可以從 alpine 建立 Oracle 連接
我想看看是否有人在 alpine linux 中成功運行 cx_Oracle
您可能可以安裝 libnsl 來解決這個問題( https://pkgs.alpinelinux.org/package/edge/community/x86/libnsl ),但是 - 我建議避免使用 Alpine。
所有這些都是為了一個稍微小一點的圖像(假設編譯器的需要最終沒有使它變大)。
長版: https : //pythonspeed.com/articles/base-image-python-docker-images/
重復我之前的觀點:
我建議使用 Oracle 支持的操作系統,從而避免黑客入侵 Alpine 的頭痛以及它不會在關鍵時刻崩潰的不確定性。 從而讓您有信心您的業務不會受到負面影響。 試試https://github.com/oracle/docker-images/blob/master/OracleInstantClient/dockerfiles/19/Dockerfile
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.