首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python应用程序在docker中运行时不会打印任何内容。

Python应用程序在docker中运行时不会打印任何内容。
EN

Stack Overflow用户
提问于 2015-04-16 00:47:16
回答 13查看 153.3K关注 0票数 290

我有一个Python (2.7)应用程序,它在我的dockerfile中启动:

代码语言:javascript
运行
复制
CMD ["python","main.py"]

main.py在启动时打印一些字符串,然后进入循环:

代码语言:javascript
运行
复制
print "App started"
while True:
    time.sleep(1)

只要我使用-it标志启动容器,一切就会如愿以偿:

代码语言:javascript
运行
复制
$ docker run --name=myapp -it myappimage
> App started

稍后我可以通过日志看到相同的输出:

代码语言:javascript
运行
复制
$ docker logs myapp
> App started

如果我尝试使用-d标志运行同一个容器,容器似乎正常启动,但我看不到任何输出:

代码语言:javascript
运行
复制
$ docker run --name=myapp -d myappimage
> b82db1120fee5f92c80000f30f6bdc84e068bafa32738ab7adb47e641b19b4d1
$ docker logs myapp
$ (empty)

但集装箱似乎仍在运行;

代码语言:javascript
运行
复制
$ docker ps
Container Status ...
myapp     up 4 minutes ... 

附件也不显示任何内容:

代码语言:javascript
运行
复制
$ docker attach --sig-proxy=false myapp
(working, no output)

有什么问题吗?在后台运行时,“打印”的行为会有所不同吗?

码头版本:

代码语言:javascript
运行
复制
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.2
Git commit (client): a8a31ef
OS/Arch (client): linux/arm
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.4.2
Git commit (server): a8a31ef
EN

Stack Overflow用户

发布于 2021-02-23 21:08:17

如果有人正在使用conda运行python应用程序,那么您应该将--no-capture-output添加到命令中,因为默认情况下,conda缓冲区为stdout。

代码语言:javascript
运行
复制
ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "my-app", "python", "main.py"]
票数 5
EN
查看全部 13 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29663459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档