Как получить доступ к сгенерированному выходному файлу в Docker - PullRequest
0 голосов
/ 19 февраля 2020

Я докертизировал мое приложение python. Это приложение подключается к базе данных Oracle, извлекает 10 строк из таблицы и генерирует Excel. Я смог построить свой образ успешно со всеми зависимыми библиотеками, и он также работает нормально. Теперь я не уверен, как получить сгенерированный файл Excel ( batchtable.xlsx ) в docker. Я новичок в docker и мне нужно ваше предложение. Я проверил вывод без сохранения записей в Excel, и он отлично работает на консоли, поэтому нет проблем с кодом.

Dockerfile

FROM python:3.7.4-slim-buster

RUN apt-get update && apt-get install -y libaio1 wget unzip

WORKDIR /opt/oracle
COPY File.py /opt/oracle

RUN wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \
    unzip instantclient-basiclite-linuxx64.zip && rm -f instantclient-basiclite-linuxx64.zip && \
    cd /opt/oracle/instantclient* && rm -f *jdbc* *occi* *mysql* *README *jar uidrvci genezi adrci && \
    echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig


RUN python -m pip install --upgrade pip 
RUN python -m pip install cx_Oracle
RUN python -m pip install pandas
RUN python -m pip install openpyxl

CMD [ "python", "/opt/oracle/File.py" ]

File.py

import cx_Oracle
import pandas as pd

#creating database connection
dsn_tns = cx_Oracle.makedsn('dev-tr01.com', '1222', service_name='ast041.com')
conn = cx_Oracle.connect(user=r'usr', password='3451', dsn=dsn_tns)
c = conn.cursor()

query ='SELECT * FROM Employee WHERE ROWNUM <10'
result = pd.read_sql(query, con=conn)
result.to_excel("batchtable.xlsx")

conn.close()

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Вы можете получить доступ к своим данным, подключив том в свой контейнер, например:

docker run -ti -v $(pwd):/data IMAGE

https://docs.docker.com/storage/volumes/#start -a-container-with-a-volume

0 голосов
/ 19 февраля 2020
  1. Добавьте переключатель -v в команду docker run. Например:

    docker run -v <path>:/output YOUR_IMAGE_NAME
    

Замените путь допустимым путем на вашем компьютере, например c:\temp на Windows.

Измените программу для записи в этот каталог:

result.to_excel("/output/batchtable.xlsx")

Если запущен Docker Рабочий стол, в настройках Docker Рабочий стол убедитесь, что ваш диск используется совместно. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...