Python, 希望我知道
     

Docker、Python 和缺少的终端输出

我会第一个承认我犯了很多错误——我喜欢说,我错了,而不是我是对的。 将其分类为 “我真希望我早点知道“.

下面是一个场景:您是 dockerizing 一个在本地运行出色的 python 应用程序,而应用程序的 Docker 版本拒绝执行任何操作 – 它看起来被锁定,没有控制台输出。听起来很熟悉吗?如果是这样,那么幸运的是,解决方案非常简单.

让我们先看一下有问题的应用程序。它可以是这么简单:

这里没有太多事情,只需将一行文本打印到控制台,就会陷入无休止的循环中. 以上可以变得更加复杂,也许无休止的循环是处理一些工作队列,或检查股票市场饲料等. 在我们的示例中,我们将坚持基础知识,只是循环.

在本地运行此应用程序表明它工作正常,所以让我们 dockerize 它.

上面的Dockerfile也很简单,事情得到。将应用复制到 Docker 环境中的路径,并在启动时运行 python app.py – 与在本地运行此应用的命令相同。看起来不错吧?让我们来火吧.

什么. 不是单个输出.

此处的解决方案实际上是在调用 Python 时使用”-u”参数。此标志禁用输出缓冲:

通过此修改,Dockerfile 现在如下所示:

就是这样!运行应用程序会产生输出,即使在 Docker 内部也是如此,希望这样可以节省一些时间。

About Jason

Jason 是一位经验丰富的企业家兼软件开发人员,擅长领导力、移动开发、数据同步和 SaaS 架构。他获得了阿肯色州立大学计算机科学学士学位( 学士学位.
View all posts by Jason →

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注