docker 中 Python print 不生效解决办法

docker 中 Python print 不生效解决办法

Intro

今天遇到一个情况,python 代码里使用 print 输出的日志在 docker 容器中没有输出,使用 docker logs 找不到日志

Solutions

显式调用 flush

调用的时候指定 flush 参数为 true

print("Hello? Anyone there?", flush=True)

环境变量

可以通过设置环境变量 PYTHONUNBUFFERED =1

使用 "-u" 参数执行 python 命令

在 dockerfile 中指定一个 -u 参数即可,如下所示:

# ...
CMD ["python", "-u", "Api.py"]

Reference

  • https://stackoverflow.com/questions/51362213/docker-compose-not-printing-stdout-in-python-app
  • https://stackoverflow.com/questions/55200135/python-docker-container-use-print

你可能感兴趣的:(docker 中 Python print 不生效解决办法)