我正在将Docker用于带有Linux容器的Windows,我创建了一个简单的python脚本,在其中我需要从2个文本文件中获取输入并将它们附加并导出到文本文件中。以下是test_script.py
的代码#including libraries
import pandas as pd
from os import path
#setting path to data
path2data1 = './data1'
path2data2 = './data2'
path2output = './'
#reading input file
input_data1 = pd.read_table(path.join(path2data1,"sample_data_input1.txt"))
input_data2 = pd.read_table(path.join(path2data2,"sample_data_input2.txt"))
#adding both the data
combined_data = input_data1.append(input_data2, ignore_index = True)
#print data in a output file
combined_data.to_csv(path.join(path2output, 'outputdata.csv'),
header=True, index=False, encoding='utf-8')
现在我正试图用它创建一个docker容器,我想只传递文件夹位置,因为数据每天都在变化。另外我还需要在运行docker镜像后输出文件。
我写了以下Dockerfile
# Use an official Python runtime as a parent image
FROM python:3
ENV http_proxy http://proxy-chain.xxx.com:911/
ENV https_proxy http://proxy-chain.xxx.com:912/
COPY . /app
WORKDIR /app/
# Install any needed packages specified
RUN pip install pandas
# Run test_script.py when the container launches
CMD ["python", "test_script.py"]
所以我正在使用docker build -t test_build .
构建docker映像。它正在成功构建,没有任何错误。
我正在使用docker run --volume ./test_script.py:/test_script.py test_build > ./output.txt
运行映像,然后它正在创建输出文件,但是该文件将为空。
如何获取数据和文件
答案 0 :(得分:0)
@archit,您需要将卷附加到Docker。
卷是您可以持久保存输出文件的唯一方法,也是您每次使用docker时docker将使输入文件运行的唯一方式。
docker run \
-v host_volume:/app \
test_build
您应该在其中放置要让Docker使用的输入文件,而不是您在构建Docker时添加的脚本的脚本。
我建议两件事之一
CMD
更改为ENTRYPOINT
。docker run -it -v path_in_your_comp:path_inside_your_docker test_build path_inside_your_docker/input_file_name path_inside_your_docker/output_file_name