Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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
Python `Docker日志在容器停止之前错误地显示为空_Python_Docker - Fatal编程技术网

Python `Docker日志在容器停止之前错误地显示为空

Python `Docker日志在容器停止之前错误地显示为空,python,docker,Python,Docker,当运行调用Python进程的Docker容器时,运行Docker日志######将不返回任何内容,尽管容器内发生了向标准输出的事件。在我运行docker stop#####之前,日志中会出现注释,在这种情况下,会返回预期的输出。docker日志也是如此-f#####-在容器停止之前,即使在预期的情况下,也不会显示任何内容 这对于调试来说非常麻烦为什么会发生这种情况?是否可以更改设置以确保日志实时更新?之所以会发生这种情况,是因为stdout和stderr是缓冲流 交互时,stdout和stder

当运行调用Python进程的Docker容器时,运行
Docker日志######
将不返回任何内容,尽管容器内发生了向
标准输出的事件。在我运行
docker stop#####
之前,日志中会出现注释,在这种情况下,会返回预期的输出。
docker日志也是如此-f#####
-在容器停止之前,即使在预期的情况下,也不会显示任何内容


这对于调试来说非常麻烦为什么会发生这种情况?是否可以更改设置以确保日志实时更新?

之所以会发生这种情况,是因为stdout和stderr是缓冲流

交互时,stdout和stderr流是行缓冲的。否则,它们会像普通文本文件一样被块缓冲。可以使用-u命令行选项替代此值

尝试添加-u标志

CMD [ "python", "-u", "./your_script.py" ]
或者,正如David Maze所指出的,您可以设置参数并获得相同的结果

ENV PYTHONUNBUFFERED=1
您还可以在每次调用print()时刷新标准输出


或者,请参阅。

这可能是因为stdout和stderr是缓冲流

交互时,stdout和stderr流是行缓冲的。否则,它们会像普通文本文件一样被块缓冲。可以使用-u命令行选项替代此值

尝试添加-u标志

CMD [ "python", "-u", "./your_script.py" ]
或者,正如David Maze所指出的,您可以设置参数并获得相同的结果

ENV PYTHONUNBUFFERED=1
您还可以在每次调用print()时刷新标准输出

或者,请参见。

具有相同的效果,因此在DockerFile中看到
ENV PYTHONUNBUFFERED=1
相当常见。具有相同的效果,因此在DockerFile中看到
ENV PYTHONUNBUFFERED=1
相当常见。