繁体   English   中英

Docker-compose Flask 应用程序不打印“打印”的输出

[英]Docker-compose flask app not printing output from 'print'

我有一个 Flask 应用程序,它有一条路线,没有什么复杂的事情,在 docker 容器中运行。 我一生都无法在日志中显示打印语句( docker-compose logs -f <containername> )。 到目前为止,我已经尝试了各种据说已经为其他人解决了这个问题的答案,包括:

  1. 调用print("test", flush=True)
  2. 设置PYTHONUNBUFFERED=1并使用echo验证它是在实际容器中设置的
  3. 设置PYTHONUNBUFFERED=0
  4. 使用-u标志运行 python
  5. 使用日志模块(logger.warning、logger.info 等)

到目前为止,一切都没有奏效。 Flask 应用程序启动得非常好,但没有显示我的打印语句的输出。 我通过添加随机语法错误和观察应用程序块本身来检查我是否正在编辑正确的文件。 我正在使用 python 3.8 和 docker-compose 2

尝试这个:

import sys
print('It is working',file=sys.stderr)

您可以使用 docker-compose 或 docker 查看日志

使用 docker-compose 你必须看到 SERVICE

Note: you add containername but you have to add service name
NOT $ docker-compose logs -f <containername> 

USE $ docker-compose logs -f <SERVICE_NAME>)

使用 docker,您必须添加容器名称或容器 ID

docker logs -f CONTAINER_ID | CONTAINER_NAME

我在寻找类似问题的答案时发现了这个问题。 我在容器的 conda 环境中运行了一个烧瓶应用程序,即使烧瓶应用程序本身工作正常,也没有得到任何日志输出。 我将以下几行添加到我的 Dockerfile 中,并按预期开始记录 -

环境 PYTHONUNBUFFERED=1

运行 echo "source activate my_env" > ~/.bashrc

环境路径 /opt/conda/envs/my_env/bin:$PATH

CMD ["python", "api.py"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM