0

我有一个用 Go 编写的应用程序,我试图将其部署到 EB。尝试访问它时,我从 nginx 收到错误 502,可能是因为应用程序没有运行。

查看日志,我收到很多错误,例如

14:01:29 build.1 | application.go:10:2: cannot find package "github.com/aws/aws-sdk-go/aws" in any of:
14:01:29 build.1 |  /opt/elasticbeanstalk/lib/go/src/github.com/aws/aws-sdk-go/aws (from $GOROOT)
14:01:29 build.1 |  /var/app/current/src/github.com/aws/aws-sdk-go/aws (from $GOPATH)

尽管事实上,我的所有依赖项都包含在vendor子目录下的应用程序包中。为什么 EB 不使用 vendoring?根据仪表板,它运行的是 Go 1.9,因此应该支持 vendoring。

4

1 回答 1

1

您需要GOPATH在 EBS 中将您的项目设置为项目目录的根目录,假设src您的目录所在的目录有一个目录vendor

例如,假设这是您的项目结构:

app/
    src/
        vendor/

并假设该项目位于~/home,这使得它的位置~/home/app

然后你GOPATH应该设置为~/home/app. Go 将尝试通过$GOPATH/src/vendor.


但如果这是您以前使用的那种结构,那么您还需要在本地开发期间更新您的 GOPATH,所以如果您还没有这样做,那么我想您正在使用另一种设置。 .. 但是,只要您的项目按照我上面描述的方式构建,这个解决方案就可以工作。

于 2018-03-15T15:33:05.880 回答