Dockerfile包含一个写入输出文件的python脚本,但未在容器上创建输出文件

时间:2017-06-26 23:03:50

标签: python docker dockerfile devops

这是我的第一个问题,所以要温柔:)

我有一个Dockerfile如下:

FROM centos:latest
Maintainer Liz Miller
LABEL description="Image Built with Dockerfile."
RUN yum -y update
RUN yum -y install python-setuptools
RUN easy_install supervisor
RUN mkdir -p /var/log/supervisor
RUN yum -y install which
RUN yum -y install git
RUN yum install python
COPY  myscript.py myscript.py
CMD ["python", "/myscript.py"]

myscript.py python脚本是:

text_file = open('output.txt', 'w')
text_file.write('Hello World')
text_file.close()

当我从这个Dockerfile构建图像时,使用脚本构建图像并运行它,我没有看到output.txt。它没有被创造出来。缺什么?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

  1. 将text_file更改为/log/output.txt

  2. 构建图像不会运行CMD。

  3. 构建图像后,运行容器,执行

    docker run -it --rm -v $(pwd)/log:/log imagename
    
  4. 您的脚本在容器内写入并向右退出。所以你不会在当前目录中看到它。解决这个问题的方法是将一个主机目录挂载到容器中,然后让脚本在其中写入,这样数据就可以持久化。

答案 1 :(得分:0)

所以我设法解决了这个问题。 CMD确实没有运行命令,但RUN确实如此。

我已将我的CMD线改为此行: 运行python myscript.py

这解决了我的问题,我能够在构建之后在容器上看到python脚本的输出文件。