在部署到Elastic Beanstalk时如何安装Go依赖项?

时间:2016-04-28 10:57:47

标签: amazon-web-services go deployment elastic-beanstalk

我有一个应用程序分为几个不同的文件,我在部署它时遇到了问题。我已经关注了this documentation,但我得到了以下内容:

application.go:7:5: cannot find package "github.com/gorilla/handlers" in any of:

我认为我需要安装我在$GOPATH中使用的库作为部署过程的一部分,但我不知道如何做到这一点并且找不到它的任何例子。使用Procfile看起来很有希望,但我的所有搜索都让我继续使用Heroku资源。

3 个答案:

答案 0 :(得分:2)

您可以使用销售工具将所有依赖项存储在供应商文件夹中。

我使用govendor

Steps:
 1. go get -u github.com/kardianos/govendor
 2. cd $GOPATH/yourProject
 3. govendor init
 4. govendor add +external

现在,'yourProject'目录可以在任何机器上独立构建,只要它在$ GOPATH中。

注意: GO15VENDOREXPERIMENT = 1需要Go 1.6+或1.5。

修改根据fl0cke的评论。如果Elastic Beanstalk仅支持Go 1.4,则可能的选项为:

答案 1 :(得分:0)

我遇到了同样的问题,并且能够使用eb client来解决。

仅介绍基础知识:

  1. 主文件的名称应为application.go

  2. 确保您的应用正在侦听端口5000。

  3. 您需要在主根目录中使用{p>

    Procfile
  4. 您将需要web: bin/application

    Buildfile
  5. 最后,您将需要一个build.sh文件,

    make: ./build.sh
    

然后,如果您运行eb deploy(在创建了最初的eb部署后),它应该可以工作。我想您可以通过压缩#!/usr/bin/env bash # Stops the process if something fails set -xe # All of the dependencies needed/fetched for your project. # This is what actually fixes the problem so that EB can find your dependencies. # FOR EXAMPLE: go get "github.com/gin-gonic/gin" # create the application binary that eb uses GOOS=linux GOARCH=amd64 go build -o bin/application -ldflags="-s -w" application.goProcfileBuildfield脚本并将其加载到Elastic Beanstalk控制台中来获得相同的结果,但是我还没有试过了。

我写了一个完整的教程,介绍如何在EB here上部署Gin应用程序。专门介绍使用Elastic Beanstalk进行部署的部分是here

答案 2 :(得分:0)

从2019年中期开始,这对我有效。要点是本地编译并上传您的二进制文件。从您的项目根目录运行此程序:

GOARCH=amd64 GOOS=linux go build -o bin/application

然后将此二进制文件包含在您上传到EB控制台的应用程序zip中。