На моем компьютере запущено приложение, которое обращается к базе данных с помощью pyodb c. Приложение сначала читает из базы данных, а затем записывает повторные результаты обратно в ту же базу данных.
Теперь я хотел бы запустить это приложение таким же образом, но в виде docker - но я не могу понять, как создать соединение между контейнером docker и базой данных.
Вот мой Docker файл (используется информация из здесь ):
FROM python:3.7.3
WORKDIR /usr/src
#add all required contents to directories
ADD results /usr/results
ADD data /usr/data
ADD src /usr/src
COPY drivers/mysql-connector-odbc-5.3.13-linux-ubuntu16.04-x86-64bit.tar.gz .
COPY drivers/oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm .
COPY drivers/oracle-instantclient12.2-odbc-12.2.0.1.0-2.x86_64.rpm .
RUN apt-get update && apt-get install -y --no-install-recommends \
unixodbc-dev
#unixODBC
RUN apt-get install -y unixodbc-dev unixodbc-bin unixodbc
# The oracle base driver needs this
RUN apt-get install -y libaio1
# Needed to install the oracle .rpm files
RUN apt-get install -y alien
#MySQL ODBC Ansi driver
RUN tar xvzf mysql-connector-odbc-5.3.9-linux-ubuntu16.04-x86-64bit.tar.gz \
&& ./mysql-connector-odbc-5.3.9-linux-ubuntu16.04-x86-64bit/bin/myodbc-installer -d -a -n "MySQL ODBC 5.3 Ansi Driver" \
-t "DRIVER=/usr/src/app/mysql-connector-odbc-5.3.9-linux-ubuntu16.04-x86-64bit/lib/libmyodbc5a.so"
# Oracle 12.2
# 1. Install the oracle instant client
RUN alien -i oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
RUN alien -i oracle-instantclient12.2-odbc-12.2.0.1.0-2.x86_64.rpm
# 2. Setup the client
ENV LD_LIBRARY_PATH /usr/lib/oracle/12.2/client64/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
# 3. Make sure links are set
RUN ldconfig
# 4. Use the myodbc-installer to install the driver
RUN ./mysql-connector-odbc-5.3.13-linux-ubuntu16.04-x86-64bit/bin/myodbc-installer -d -a -n "Oracle 12.2" -t "DRIVER=/usr/lib/oracle/12.2/client64/lib/libsqora.so.12.1"
#installing libraries
RUN pip install pandas
RUN pip install pyodbc
RUN pip install numpy
RUN pip install datetime
RUN pip install -U scikit-learn
Строка подключения что я использую в своем скрипте:
DRIVER={Oracle 12.2};UID=****;PWD=***;DSN=***;DBQ=*** ...
Если я запускаю свой скрипт из контейнера, я получаю следующее сообщение об ошибке:
('08004', '[08004] [unixODBC][Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified\n (12154) (SQLDriverConnect)'
Я могу найти очень мало информации о том, как подключить изображение docker к базе данных, и любая помощь будет принята с благодарностью :)
Если для ответа на этот вопрос необходима дополнительная информация, пожалуйста, дай мне знать. Заранее большое спасибо