我有一个用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,因此应支持销售。
答案 0 :(得分:1)
您需要将EBS中的GOPATH
设置为项目目录的根目录,假设src
目录位于vendor
目录中。
例如,假装这是您的项目结构:
app/
src/
vendor/
并假装该项目位于~/home
,其位置为~/home/app
。
然后您的GOPATH
应设为~/home/app
。 Go将尝试通过$GOPATH/src/vendor
访问依赖项。
但如果这是你之前使用的那种结构,那么你需要在本地开发过程中更新你的GOPATH,所以如果你还没有这样做那么我想你会使用另一种但是,只要你的项目结构如上所述,这个解决方案就会起作用。