2014-12-04 45 views
11

因此,我有一些在Docker容器中运行的Python代码。我使用Google的gcloud脚本启动了本地env。我看到了基本的访问方式日志和健康检查信息,但我不确定如何通过日志消息传递我从Python应用程序写入控制台。有没有一个参数可以用我的gcloud脚本来设置,或者我可以在Dockerfile中设置一些帮助的参数?如何显示在Docker容器内运行的Python应用程序的输出?

+3

你可以[attach](https://docs.docker.com/reference/commandline/cli/#attach)将自己放到正在运行的容器中,也可以使用[docker logs](https://docs.docker。 COM /参考/命令行/ CLI /#日志)。你也可以使用[docker run -a](https://docs.docker.com/reference/commandline/cli/#run)启动一个容器来附加自己。我希望这些信息可以帮助你。 – 2014-12-04 20:16:08

+1

共享'Dockerfile'获得更多支持。现在在容器内的日志在哪里?通常将日志打印到容器内的控制台(stdout/stderr),然后您可以在外面使用'docker logs'。您可以随时使用'docker exec'命令跳到内部查看日志,如正常应用 – 2014-12-08 00:52:45

+0

感谢您的帮助。 “码头日志”是我一直在寻找的。我认为我缺少的部分是如何获得正在运行的docker进程ID(docker ps),所以我可以将它提供给logs命令。如果你们中的任何一个都能写出你的答案,我会将其标记为正确的。 – Brandon 2014-12-08 21:29:25

回答

17

对于Python来记录你的终端/命令行/控制台上,从码头工人容器执行时,你应该有这个变量设置你的docker-compose.yml

environment: 
    - PYTHONUNBUFFERED=0 

这也是一个有效的解决方案,如果你是使用print进行调试。

+3

使我的一天。谢谢。 – 2016-11-19 21:16:59

+1

很高兴可以帮忙:) – Sentient07 2016-11-20 11:37:03

+0

我正在使用docker-compose,其中一个容器正在运行Django。尽管正在打印来自“mange.py runserver”的消息(所有GET和POST请求都显示出来),但我的打印消息没有显示,直到我添加了这个环境变量。 谢谢! – pitervergara 2016-12-18 15:35:41

相关问题