Приложение Dokku + торнадо = 502 Bad Gateway

Я пытаюсь подружиться с докку. Я запускаю dokku на дроплете DigitalOcean.

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 [email protected]: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

Все переменные окружения прописаны правильно и вроде как приложение работает. Любые идеи?


person hgen    schedule 24.03.2014    source источник


Ответы (2)


Гораздо проще, чем я думал. У меня была привязка на 0.0.0.0

Извините за глупый вопрос.

person hgen    schedule 24.03.2014
comment
@przemo_li при привязке к докеру 127.0.0.1 не может правильно проксировать порт. - person hgen; 23.05.2014
comment
Это означает, что узел должен использовать 0.0.0.0? Или Нгинкс? Или мне изменить настройки докку? - person przemo_li; 26.05.2014
comment
@przemo_li ваше приложение должно использовать 0.0.0.0. Tornado по умолчанию использует этот адрес. - person hgen; 27.05.2014

Я столкнулся с этой же проблемой. Привязка к 0.0.0.0 была частью проблемы. Dokku также ожидает, что Tornado будет обслуживать порт 5000. Итак, исправление изменило вызов прослушивания сервера на это: http_server.listen(5000, address='0.0.0.0')

person Lunulata    schedule 20.03.2016
comment
Почему Tornado ожидает порт 5000? - person jasmo2; 23.05.2016
comment
Dokku устанавливает переменную окружения PORT, которую должны соблюдать все приложения для установки порта. Кроме того, вы должны привязываться ко всем интерфейсам, иначе он не сможет проксировать из-за пределов контейнера. Heroku делает одно и то же в обоих случаях, так что в этом нет ничего особенного. - person Jose Diaz-Gonzalez; 24.05.2016