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