用于使用 Pandas 运行 Python 的 Docker 文件

Tfo*_*vid 5 docker

我创建了以下 Dockerfile

FROM python
COPY . /home
CMD pip install pandas
CMD mkdir /home/report
CMD mkdir /home/data
CMD python /home/hello.py
Run Code Online (Sandbox Code Playgroud)

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())
Run Code Online (Sandbox Code Playgroud)

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

  • 下没有目录reportdata尚未创建/home
  • 最后一个命令python /home/hello.py不会自行执行。我必须自己输入才能让脚本运行。
  • 一旦我输入python /home/hello.py,问候和提示输入我的名字的前两行就会正确执行,但随后会出现错误,指出 pandas 未知。
  • 直到我手动安装pandas,整个脚本才正确运行。

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

Rob*_*ert 4

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

\n\n

Dockerfile:

\n\n
FROM python\nRUN pip install pandas\nRUN mkdir /home/report\nRUN mkdir /home/data\n\nCOPY . /home\nWORKDIR /home\nCMD python /home/hello.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

mycsv.csv:

\n\n
a,b,c\n1,2,3\n4,5,6\n
Run Code Online (Sandbox Code Playgroud)\n\n

构建:docker build . -t pandas-test

\n\n

跑步:

\n\n
\xe2\x96\xb6 docker run -it pandas-test\nWhat is your Name? Tfovid\nNice to meet you Tfovid\n   a  b  c\n0  1  2  3\n1  4  5  6\n
Run Code Online (Sandbox Code Playgroud)\n