我有一个应用程序分为几个不同的文件,我在部署它时遇到了问题。我已经关注了this documentation,但我得到了以下内容:
application.go:7:5: cannot find package "github.com/gorilla/handlers" in any of:
我认为我需要安装我在$GOPATH
中使用的库作为部署过程的一部分,但我不知道如何做到这一点并且找不到它的任何例子。使用Procfile看起来很有希望,但我的所有搜索都让我继续使用Heroku资源。
答案 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来解决。
仅介绍基础知识:
主文件的名称应为application.go
。
确保您的应用正在侦听端口5000。
您需要在主根目录中使用{p>
Procfile
您将需要web: bin/application
与
Buildfile
最后,您将需要一个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.go
,Procfile
和Buildfield
脚本并将其加载到Elastic Beanstalk控制台中来获得相同的结果,但是我还没有试过了。
我写了一个完整的教程,介绍如何在EB here上部署Gin应用程序。专门介绍使用Elastic Beanstalk进行部署的部分是here。
答案 2 :(得分:0)
从2019年中期开始,这对我有效。要点是本地编译并上传您的二进制文件。从您的项目根目录运行此程序:
GOARCH=amd64 GOOS=linux go build -o bin/application
然后将此二进制文件包含在您上传到EB控制台的应用程序zip中。