Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dockerfile包含写入输出文件的python脚本,但未在容器上创建输出文件_Python_Docker_Dockerfile_Devops - Fatal编程技术网

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

Dockerfile包含写入输出文件的python脚本,但未在容器上创建输出文件,python,docker,dockerfile,devops,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 y

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

我有一个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。它只是没有被创造出来。少了什么?我如何解决这个问题

  • 将文本文件更改为
    /log/output.txt

  • 生成映像不运行CMD

  • 构建映像后,运行容器,执行以下操作:

    docker run -it --rm -v $(pwd)/log:/log imagename
    

  • 您的脚本在容器中写入,然后按正确的方式退出。因此,您将无法在当前目录中看到它。解决这个问题的方法是将一个主机目录装入容器,并让脚本在其中写入,这样数据就可以持久化。

    因此我设法解决了这个问题。 CMD确实不运行命令,但run运行

    我已将命令行更改为这一行: 运行python myscript.py


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

    Hi-Noam,感谢您的回复。如果构建没有运行CMD,那么我应该如何运行脚本?您提到了使用输出文件运行容器,但是脚本呢?在尝试了这么多之后,这个简单的解决方案终于对我起作用了,我只是想说声谢谢