gpt4 book ai didi

python - `Docker logs` 错误地显示为空,直到容器停止

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:56 25 4
gpt4 key购买 nike

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

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

最佳答案

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

When interactive, stdout and stderr streams are line-buffered. Otherwise, they are block-buffered like regular text files. You can override this value with the -u command-line option.

尝试添加 -u 标志。

CMD [ "python", "-u", "./your_script.py" ]

或者,正如 David Maze 所指出的,您可以设置 PYTHONUNBUFFERED environment variable并获得相同的结果。

ENV PYTHONUNBUFFERED=1

您也可以在每次调用 print() 时刷新标准输出。

sys.stdout.flush()

或者,参见 logging module .

关于python - `Docker logs` 错误地显示为空,直到容器停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com