J'avais besoin de me connecter à la base de données Oracle à partir d'une application Python et j'ai écrit un Dockerfile pour mettre le client Python, mais j'ai eu beaucoup de problèmes, je vais donc l'écrire sous forme de mémorandum.
Dockerfile
FROM python:3.7
RUN pip install cx_Oracle
# Install Oracle Client
ENV ORACLE_HOME=/opt/oracle
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
RUN apt-get update && apt-get install -y libaio1 && rm -rf /var/lib/apt/lists/* \
&& wget -q https://download.oracle.com/otn_software/linux/instantclient/19600/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip \
&& unzip instantclient-*.zip \
&& mkdir -p $ORACLE_HOME \
&& mv instantclient_19_6 $ORACLE_HOME/lib \
&& rm -f instantclient-*.zip
cx_Oracle 8 Initialization — cx_Oracle 8.0.0 documentation
Selon la documentation officielle, la bibliothèque Oracle Client doit être installée pour utiliser cx_Oracle, et cx_Oracle essaiera de charger la bibliothèque dans l'ordre suivant:
cx_Oracle.init_oracle_client (lib_dir =" ... ")
$ LD_LIBRARY_PATH
)$ORACLE_HOME/lib
Parmi ceux-ci, lorsque j'ai essayé d'utiliser les méthodes «1.» et «3.», j'ai été très troublé parce que j'ai eu une erreur disant «Il n'y a pas de tel fichier» uniquement pour «libnnz19.so» même si d'autres bibliothèques peuvent être lues. La cause est encore inconnue.
Quand j'ai essayé la méthode «2», elle a été lue sans aucun problème.
Recommended Posts