Heroku码头工人映像需要开放端口

时间:2019-05-16 03:57:01

标签: python docker heroku configuration

我在Docker上托管了一个简单的bot,它是单个文件脚本,不需要任何Web服务。我将其部署在Heroku上,但由于端口丢失而不断崩溃:

enter image description here

我有以下配置变量:

enter image description here

我尝试在Docker EXPOSE $PORT上公开一个无效的端口。有没有一种方法可以让我在Heroku上运行此脚本而不会由于缺少端口而导致常规崩溃?

2 个答案:

答案 0 :(得分:1)

这里至少有两个问题:

  1. 设置环境变量时,请勿设置process.env.FOO。只需设置FOO。这将创建(或更新)环境变量。在JavaScript代码中,您可以通过process.env 访问环境变量,但这不是其名称的一部分。

    您可以在屏幕截图中显示的网络用户界面中进行操作,也可以通过the heroku config command进行操作,例如

    heroku config:set FOO=bar
    
  2. 在这种情况下,您尝试向后使用PORT环境变量。 您不必在Heroku上选择端口。 Heroku 会选择一个端口并通过设置PORT将其分配给您。您的代码必须尊重该变量具有的任何值。

    假设您使用的是Express(基于您对process.env的使用),您将需要以下内容:

    const PORT = process.env.PORT || 5000;
    
    express().listen(PORT);
    

    您还用标记了您的问题。在这种情况下,您可以做类似的事情

    import os
    
    port = os.getenv('PORT', default='5000')
    

    ,然后将port与正在使用的任何Web服务器一起使用。

答案 1 :(得分:0)

在运行容器时是否在dockerfile中设置了值$ PORT或将其作为env参数(-e)传递。我认为它试图绑定$ PORT而不是实际端口。