为什么 AWS elastic beanstalk 无法构建我的应用程序?
Why does AWS elastic beanstalk fail to build my app?
我有一个用 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。
您需要将 EBS 中的 GOPATH
设置为项目目录的根目录,假设有一个 src
目录,您的 vendor
目录所在。
例如,假设这是您的项目结构:
app/
src/
vendor/
并假设该项目位于 ~/home
,这使得它的位置 ~/home/app
。
那么你的GOPATH
应该设置为~/home/app
。 Go 将尝试通过 $GOPATH/src/vendor
.
访问依赖项
但如果这是您之前使用的那种结构,那么您也需要在本地开发期间更新您的 GOPATH,所以如果您还没有这样做,那么我想您正在使用不同类型的设置...但是,只要您的项目结构如上所述,此解决方案就可以使用。
我有一个用 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。
您需要将 EBS 中的 GOPATH
设置为项目目录的根目录,假设有一个 src
目录,您的 vendor
目录所在。
例如,假设这是您的项目结构:
app/
src/
vendor/
并假设该项目位于 ~/home
,这使得它的位置 ~/home/app
。
那么你的GOPATH
应该设置为~/home/app
。 Go 将尝试通过 $GOPATH/src/vendor
.
但如果这是您之前使用的那种结构,那么您也需要在本地开发期间更新您的 GOPATH,所以如果您还没有这样做,那么我想您正在使用不同类型的设置...但是,只要您的项目结构如上所述,此解决方案就可以使用。