【问题标题】:Elastic Beanstalk Procfile for go用于 Go 的 Elastic Beanstalk Procfile
【发布时间】:2017-09-07 16:47:15
【问题描述】:
我正在尝试使用 Elastic Beanstalk 将我的 go restful 服务器程序部署到 EC2 Linux。该文件说我需要在根目录下创建一个 Procfile。所以我做了。步骤如下:
-
使用 myapp.go 构建我的 go 程序
$ go build -o myapp -i myapp.go
-
在根目录下创建一个具有确切名称的 Procfile
web: myapp
- 将 Procfile 和 myapp 映像压缩到
myapp.zip 文件中。
通过 Elastic Beanstalk 控制台上传到服务器。但我不断收到Degraded 健康和警告
WARN 进程终止时间超过 10 秒。
任何建议。顺便说一句,我尝试对来自 Elastic Beanstalk 示例库的简单 application.go zip 文件使用相同的 procfile 过程。它也没有用。
【问题讨论】:
标签:
amazon-web-services
go
deployment
amazon-elastic-beanstalk
【解决方案1】:
我终于能够使用eb client 使用 Elastic Beanstalk 部署一个 Go 应用程序。 EB 需要一些东西:
- 主文件的名称应为
application.go。
- 确保您的应用正在侦听端口 5000。
-
您需要在主根目录中使用 Procfile
web: bin/application
-
你需要一个构建文件
make: ./build.sh
-
最后你需要一个build.sh 文件
#!/usr/bin/env bash
# Stops the process if something fails
set -xe
# All of the dependencies needed/fetched for your project.
# 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"
然后,如果您运行 eb deploy(在创建初始 eb 存储库之后),它应该可以工作。我为在 EB here 上部署 Gin 应用程序编写了一个完整的教程。专门关于使用 Elastic Beanstalk 进行部署的部分是 here。