Не удалось привязать порт к приложению Ruby на Heroku - PullRequest
0 голосов
/ 06 мая 2019

Я хочу разместить приложение Ruby on Rails в качестве контейнера Docker на Heroku.Но, кажется, есть проблема с привязкой порта при развертывании.

Я успешно разместил простое приложение на Ruby через Docker локально и на Heroku, затем перешел к настоящему приложению.Приложение отлично работает на локальном хосте, но получает проблему с привязкой порта:

Ошибка R10 (время загрузки) -> Веб-процессу не удалось привязаться к $ PORT в течение 60 секунд после запуска

2019-05-06T18:23:13.608790+00:00 app[web.1]: Digest::Digest is deprecated; use Digest
2019-05-06T18:23:15.826137+00:00 app[web.1]: Puma 2.7.1 starting...
2019-05-06T18:23:15.826185+00:00 app[web.1]: * Min threads: 0, max threads: 16
2019-05-06T18:23:15.826188+00:00 app[web.1]: * Environment: production
2019-05-06T18:23:15.826189+00:00 app[web.1]: * Listening on tcp://0.0.0.0:3000
2019-05-06T18:24:03.338792+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2019-05-06T18:24:03.338920+00:00 heroku[web.1]: Stopping process with SIGKILL
2019-05-06T18:24:03.468261+00:00 heroku[web.1]: State changed from starting to crashed
2019-05-06T18:24:03.451392+00:00 heroku[web.1]: Process exited with status 137
2019-05-06T18:24:05.407120+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=floating-spire-20546.herokuapp.com request_id=9362ea3c-bcb6-476a-a5d4-76c82cd443a3 fwd="5.151.93.202" dyno= connect= service= status=503 bytes= protocol=https

Я попытался настроить переменную $PORT в Heroku на 3000. Я также попытался запустить приложение с rails server -b 0.0.0.0.Я пытался без какого-либо порта тоже.

Я думаю, это может быть связано с размером приложения и загрузкой нескольких драгоценных камней, которые могут превышать 60 секунд.

Я ожидаю, что приложение будет привязано к порту, к которому будет осуществляться доступ.Однако он разбился.

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

В моем случае мне пришлось использовать другой скрипт запуска.Я использовал CMD ["bundle", "exec", "puma" ,"-C" ,"config/puma.rb"] вместо rails server -b 0.0.0.0

0 голосов
/ 06 мая 2019

Я попытался настроить $PORT переменную в Heroku для 3000

Не так работает переменная окружения PORT. Вы не можете установить это значение, которое хотите использовать; Heroku устанавливает его и вы должны привязаться к порту, который он вам дает.

Например, если вы используете Puma, вы можете включить опцию -p в свой Procfile:

web: bundle exec puma -p ${PORT:-3000}

Здесь мы используем значение, заданное $PORT, возвращаясь к 3000, если оно не установлено (например, на вашей машине для разработки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...