泊坞窗文件与熊猫
我已经创建了如下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 run -it myexample bash
运行它运行Python以便通过外壳与它进行交互。该建筑去罚款及运行它,我带有shell提示符,但后来:
- 没有目录
report
或data
已/home
下创建。 - 最后的命令
python /home/hello.py
不会自行执行。我必须自己输入才能使脚本运行。 - 一旦我输入
python /home/hello.py
,迎接并提示我姓名的前两行就会正确执行,但错误表示熊猫未知。 - 直到我手动安装熊猫,整个脚本才能正确运行。
因此,总之,CMD
声明似乎没有被考虑在内。我究竟做错了什么?
当你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
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级运行的语句为一个,这样会创建一个层。
- 我建议你使用比/ home更好的目录
- 使用卷来存储数据和日志。
为什么建议使用另一个不是'/ home'的目录?你能举个例子吗? – Tfovid
https://en.m.wikipedia.org/wiki/Filesystem_Hierarchy_Standard –
只有最后一个CMD有效,您应该将所有其他CMD替换为一个RUN – user2915097