猿问

使用 docker 镜像在 Heroku 上部署 Go App + Vue.js

我正在尝试使用 docker 图像在 Heroku 上部署应用程序https://github.com/valasek/timesheet 。应用程序在前端有一个 go 后端 (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


忽然笑
浏览 159回答 2
2回答

慕容3067478

这很可能会发生,因为 Heroku 没有检测到您的应用程序的任何端点(默认情况下绑定在端口 3000 上)。Heroku 将您的应用程序归为一个动态端口,并将端口值放在名为 的环境变量中$PORT。您的应用程序必须使用 Heroku 在此变量中指定的值并侦听其上的传入连接,因为这是 Heroku 转发连接的地方。您可以使用检查应用程序上的当前环境变量heroku run printenv(我看到你正在使用 Viper,它应该处理 env 变量。

杨魅力

在 Heroku DB 连接和 PORT 字符串应该从环境变量中读取数据库网址港口更新的是文件timesheet.yaml。Axios 中的 BaseUrl 设置为 '' 因此 Axios 使用相对 API URL,这是有效的。修复在文件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
随时随地看视频慕课网APP

相关分类

Go
我要回答