Развертывание приложения Go App + Vue.js на Heroku с использованием образа докера - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь развернуть приложение https://github.com/valasek/timesheet на Heroku, используя образ докера.Приложение имеет внутренний интерфейс (negroni / gorilla) и Vue.js / Vuetify.js на внешнем интерфейсе и использует постоянство PostgreSQL.

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

Соответствующий Dockerfile - https://github.com/valasek/timesheet/blob/master/Dockerfile

Вот шагиЯ делаю:

> docker build --rm -f "Dockerfile" -t timesheet:latest .
Successfully tagged timesheet:latest
...

> heroku container:push timesheet:latest --app timesheet-cloud
...
The push refers to repository [registry.heroku.com/timesheet-cloud/timesheet]
...
Your image has been successfully pushed. You can now release it with the 'container:release' command.

> heroku container:release timesheet --app timesheet-cloud
Releasing images timesheet to timesheet-cloud... done

> heroku ps -a timesheet-cloud
Free dyno hours quota remaining this month: 971h 8m (97%)
Free dyno usage for this app: 0h 0m (0%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping

No dynos on ⬢ timesheet-cloud

> heroku logs --app timesheet-cloud
2019-02-15T08:33:49.373221+00:00 app[api]: Deployed timesheet (709022e100f9) by user <email-reducted>@gmail.com
2019-02-15T08:33:49.373221+00:00 app[api]: Release v20 created by user <email-reducted>@gmail.com
2019-02-15T08:34:43.901070+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=timesheet-cloud.herokuapp.com request_id=4c21eb79-5344-4d40-b341-8977128c873f fwd="195.250.152.42" dyno= connect= service= status=503 bytes= protocol=https
2019-02-15T08:34:44.842322+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=timesheet-cloud.herokuapp.com request_id=b66caaee-880a-46a0-918b-e778a49334f4 fwd="195.250.152.42" dyno= connect= service= status=503 bytes= protocol=https
2019-02-15T08:34:54.865321+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=timesheet-cloud.herokuapp.com request_id=d5af6aa7-0279-4f0e-a4cc-0f9e8682ec2f fwd="195.250.152.42" dyno= connect= service= status=503 bytes= protocol=https
2019-02-15T08:34:55.158317+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=timesheet-cloud.herokuapp.com request_id=2d69f4b5-9015-48de-9314-c493703818d1 fwd="195.250.152.42" dyno= connect= service= status=503 bytes= protocol=https

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Спасибо, @ Джонатан Мюллер.Решено!Графический интерфейс пользователя работает на https://timesheet -cloud.herokuapp.com .

  1. При подключении к базе данных Heroku и строке PORT следует читать из переменных среды

Обновлен файл timesheet.yaml .

BaseUrl в Axios имеет значение '', поэтому Axios использует относительные URL-адреса API, что работает.Исправлено в файле axiosSettings.js .

До того, как команда heroku run printenv вернула:

panic: dial tcp 127.0.0.1:5432: connect: connection refused

Теперь я получаю:

Running printenv on ⬢ timesheet-cloud... up, run.1962 (Free)
Feb 15 16:22:34.186 [INFO] config file /timesheet.yaml
Feb 15 16:22:34.197 [INFO] connecting to DB postgres://user:hash@ec2-54-235-68-3.compute-1.amazonaws.com:5432/dbname
Feb 15 16:22:34.246 [INFO] connected to DB postgres://user:hash@ec2-54-235-68-3.compute-1.amazonaws.com:5432/dbname
0 голосов
/ 15 февраля 2019

Это может произойти, потому что Heroku не обнаруживает конечную точку для вашего приложения (по умолчанию привязана к порту 3000).

Heroku приписывает вашему приложению динамический порт и помещает значение порта в переменную envnamed $PORT.

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

Переменная имеетдля чтения при запуске приложения: https://help.heroku.com/PPBPA231/how-do-i-use-the-port-environment-variable-in-container-based-apps

Вы можете проверить текущие переменные env в своем приложении, используя heroku run printenv

(я вижу, что вы используете Viper, который должен обрабатывать переменные env.Однако в своей документации они говорят, что в env он чувствителен к регистру, возможно, это может объяснить, почему он не работает для вас: https://github.com/spf13/viper#working-with-environment-variables)

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