Docker文件,用于使用Pandas运行Python
我已经创建了以下DockerfileDocker文件,用于使用Pandas运行Python,docker,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 r
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提示符,但是:
- 在
/home
下未创建任何目录报告
或数据
- 最后一个命令
python/home/hello.py
不会单独执行。我必须自己键入才能运行脚本
- 键入
python/home/hello.py
后,问候和提示输入我的名字的前两行将正确执行,但随后出现一个错误,表示pandas未知
- 直到我手动安装pandas,整个脚本才能正确运行
因此,总之,似乎没有考虑到CMD
语句。我做错了什么?当图像使用运行
执行命令时。然后,仅使用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构建构建-t测试
运行:
注:
- 作为一般规则,最好将2条RUN语句折叠为一条语句,以便创建一个层
- 我建议您使用比/home更好的目录
- 使用卷存储数据和日志李>
只有最后一个CMD有效,您应该用一个run替换所有其他CMD为什么建议使用除/home
之外的其他目录?你能举个例子吗?
▶ 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
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