背景
在 Docker 容器中执行 Python 脚本时,输出行为可能会有所不同,具体取决于容器是以交互方式运行还是以分离方式运行
问题
在分离模式(-d 标志)下,Python 脚本可能不会打印任何输出,即使容器看起来正在正常运行。此问题影响在 Dockerfile 中使用 CMD ["python", "main.py"] 启动的 Python(版本 2.7)应用程序。
原因
问题源于Python 的默认缓冲输出行为。当分离运行时,容器的输出缓冲区不会自动刷新,因此它们会累积直到达到某个阈值。这会导致分离期间缺少可见输出。
解决方案
要解决此问题,请使用无缓冲输出(-u 标志):
CMD ["python", "-u", "main.py"]
这会强制 stdout 和 stderr 不被缓冲,从而允许输出立即以分离的方式显示
说明
通过启用无缓冲输出,可以在分离执行期间实时查看容器的输出。
以上是为什么我的 Dockerized Python 应用程序在分离运行时不显示任何输出?的详细内容。更多信息请关注PHP中文网其他相关文章!