【问题标题】:Dokku + tornado app = 502 Bad GatewayDokku + 龙卷风应用程序 = 502 错误网关
【发布时间】:2014-03-24 09:04:42
【问题描述】:

我正在努力与 dokku 交朋友。 我在 DigitalOcean droplet 上运行 dokku。

user@mypc:~$ cat Procfile 
web: python3 main.py

user@mypc:~$ git push dokku master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 295 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
-----> Building app ...
-----> Installing ENV in build environment ...
   Python app detected
-----> Preparing Python runtime (python-3.4.0)
-----> Installing Setuptools (2.1)
-----> Installing Pip (1.5.4)
-----> Installing dependencies using Pip (1.5.4)
    < LONG INSTALL REQS LOG >
   Cleaning up...
-----> Discovering process types
   Procfile declares types -> web
-----> Releasing app ...
-----> Deploying app ...
-----> Cleaning up ...
=====> Application deployed:
   http://app.myapp.ru

To dokku@myapp.ru:app
   d2cd6b3..7733adf  master -> master

尽管下载成功了,但我仍然收到 502 错误

root@myserver:~# dokku run app ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2  17888  1496 ?        Ss+  08:41   0:00 /bin/bash /exec ps aux
root        13  0.0  0.2  15536  1128 ?        R+   08:41   0:00 ps aux

root@myserver:~# dokku logs app
[I 140324 08:41:37 main:75] Starting http server on localhost:5000

如果你直接运行应用程序,它启动成功,但我仍然会得到502错误。

root@myserver:~# dokku run app python3 main.py
[I 140324 08:59:19 main:75] Starting http server on localhost:5000

所有环境变量拼写正确,以及应用程序运行时的类似情况。 有什么想法吗?

【问题讨论】:

    标签: python python-3.x tornado dokku


    【解决方案1】:

    比我想象的要容易得多。我绑定了 0.0.0.0

    对不起,愚蠢的问题。

    【讨论】:

    • @przemo_li 绑定到 127.0.0.1 docker 时无法正确代理端口。
    • 意思,节点应该使用0.0.0.0?还是 Nginx?还是我应该更改独库设置?
    • @przemo_li 你的应用应该使用 0.0.0.0。 Tornado 默认使用这个地址。
    【解决方案2】:

    我遇到了同样的问题。绑定到 0.0.0.0 是问题的一部分。 Dokku 还期望 Tornado 服务于端口 5000。因此,修复将服务器侦听调用更改为:http_server.listen(5000, address='0.0.0.0')

    【讨论】:

    • 为什么 Tornado 需要端口 5000?
    • Dokku 设置了一个 PORT env var,所有应用程序都应该尊重它来设置端口。同样,您应该绑定到所有接口,否则它将无法从容器外部代理。 Heroku 在这两种情况下都做同样的事情,所以这没什么特别的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2014-01-30
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多