使用Pandas运行Python的Docker文件

时间:2017-06-03 17:28:31

标签: docker

我创建了以下Dockerfile

FROM python
COPY . /home
CMD pip install pandas
CMD mkdir /home/report
CMD mkdir /home/data
CMD python /home/hello.py

其中hello.py是简单的Python脚本

name = input('What is your Name? ')
print('Nice to meet you', name)

from pandas import read_csv
mydf = read_csv('mycsv.csv')
print(mydf.head())

然后我使用docker build -t myexample .构建Docker镜像,并使用docker run -it myexample bash运行它,以便通过shell与它进行交互。建筑物运行良好,在运行它时,我提出了shell提示符,但随后:

  • report下未创建目录data/home
  • 最后一个命令python /home/hello.py不会自行执行。我必须自己输入以运行脚本。
  • 一旦我输入python /home/hello.py,前两行迎接并提示我的名字就会被正确执行,但是一个错误就说大熊猫是未知的。
  • 直到我手动安装pandas才能正确运行整个脚本。

因此,总而言之,似乎没有考虑CMD个陈述。我做错了什么?

2 个答案:

答案 0 :(得分:1)

FROM python
RUN pip install --no-cache-dir pandas && \
    mkdir /home/report /home/data && \
    chmod +x /home/hello.py
COPY . /home
VOLUME /home/report /home/data
WORKDIR /home
ENTRYPOINT /home/hello.py

注意:

  • 作为一般规则,最好将2个RUN语句合并为一个,这样就可以创建一个图层。
  • 我建议您使用比/ home
  • 更好的目录
  • 使用卷来存储数据和日志。

答案 1 :(得分:0)

build图像使用RUN执行命令时。然后,仅使用CMD一次来声明在构建之后将启动容器的命令(因此只有CMD):

Dockerfile:

FROM python
RUN pip install pandas
RUN mkdir /home/report
RUN mkdir /home/data

COPY . /home
WORKDIR /home
CMD python /home/hello.py

mycsv.csv:

a,b,c
1,2,3
4,5,6

构建:docker build . -t pandas-test

执行命令

▶ docker run -it pandas-test
What is your Name? Tfovid
Nice to meet you Tfovid
   a  b  c
0  1  2  3
1  4  5  6