如何将beego应用部署到Heroku?

3
我正在使用beego创建一个Web应用程序,需要在Heroku上运行。如果我只在Procfile中指定应用程序的二进制文件,则可以正常运行。但是,我想在应用程序中使用swagger,因此需要使用bee来启动应用程序,如下所示:bee run -downdoc=true -gendoc=true,以便自动创建和下载所有与swagger相关的图标、html等。但是,如果我将其指定为Procfile中的命令(即使将bee添加到vendor中以使其可用),它也会失败,因为应用程序在运行时没有可用的go命令。确切的错误信息如下:0001 There was an error running 'go version' command: exec: "go": executable file not found in $PATH。如何绕过此问题而不将整个swagger规范添加到Heroku(以及GitHub,因为它是一个存储库)?

如果有人在意的话...我放弃了,现在使用谷歌云。 - mjgalindo
1个回答

1
你不能在Heroku上运行bee命令,因为它是一个可执行程序。
但是,你可以通过添加项目依赖项在Heroku上运行beego应用。为此,你应该使用类似https://github.com/kardianos/govendor的工具。 1. 安装govendor后,请尝试在你的项目文件夹中按照以下步骤操作:
$ govendor init

这个命令将在当前目录下创建./vendor/vendor.json文件。
{
  "comment": "https://github.com/ismailakbudak/beego-api-example",
  "heroku": {
    "install" : [ "./..." ],
    "goVersion": "go1.11"
  },
  "ignore": "test",
  "package": [],
  "rootPath": "reporting-api"
}

请像上面的例子一样添加heroku标签。这个配置的相关信息可以在这里找到https://devcenter.heroku.com/articles/go-dependencies-via-govendor#build-configuration2. 然后使用以下命令添加beego包依赖:
$ govendor fetch github.com/astaxie/beego 

它将下载beego包到./vendor目录中。
3. 最后,您应该在main.go文件中配置监听端口和beego运行模式作为heroku的生产环境。
为了无问题地部署您的应用程序,在conf/app.conf中默认配置必须是runmode = prod。我尝试将其设置为默认开发模式,并从heroku配置变量更改它,但它在设置运行模式之前编译软件包并出现异常,显示此消息panic: you are running in dev mode
func main() {
    log.Println("Env $PORT :", os.Getenv("PORT"))
    if os.Getenv("PORT") != "" {
        port, err := strconv.Atoi(os.Getenv("PORT"))
        if err != nil {
            log.Fatal(err)
            log.Fatal("$PORT must be set")
        }
        log.Println("port : ", port)
        beego.BConfig.Listen.HTTPPort = port
        beego.BConfig.Listen.HTTPSPort = port
    }
    if os.Getenv("BEEGO_ENV") != "" {
        log.Println("Env $BEEGO_ENV :", os.Getenv("BEEGO_ENV"))
        beego.BConfig.RunMode = os.Getenv("BEEGO_ENV")
    }

    beego.BConfig.WebConfig.DirectoryIndex = true
    beego.BConfig.WebConfig.StaticDir["/"] = "swagger"

    beego.Run()
}

你可以使用 BEEGO_ENV=dev bee run 来继续开发您的应用,而无需再次更改它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接