Image Docker pouvant utiliser cx_Oracle

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:

  1. Le chemin spécifié par cx_Oracle.init_oracle_client (lib_dir =" ... ")
  2. Chemin de la bibliothèque du système d'exploitation ($ LD_LIBRARY_PATH)
  3. $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

Image Docker pouvant utiliser cx_Oracle
Créer un environnement Docker qui peut utiliser PyTorch et JupyterLab
Utiliser le chiffrement de la bibliothèque de chiffrement avec l'image Python de Docker
Skflow qui peut utiliser TensorFlow comme scicit-learn
J'ai créé une image Docker qui peut appeler FBX SDK Python à partir de Node.js
Exposez votre image Docker
Enregistrement d'image ANT qui peut être utilisé en 5 minutes
Utiliser python avec docker
Résumé de l'image Jupyter Docker
Utilisez des cas qui vous motivent à utiliser Docker que vous n'avez jamais utilisé
Essayez d'utiliser l'image Docker de Jupyter