用于 Go 的 Elastic Beanstalk Procfile

Posted

技术标签:

【中文标题】用于 Go 的 Elastic Beanstalk Procfile【英文标题】:Elastic Beanstalk Procfile for go 【发布时间】: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 过程。它也没有用。

【问题讨论】:

嗨!我也遇到了同样的问题,你解决了吗? 我也有同样的问题。有什么想法吗? 【参考方案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。

【讨论】:

不错,不错的收获。更新。谢谢! 这些都不适合我,我不明白怎么回事。相同的设置:(

以上是关于用于 Go 的 Elastic Beanstalk Procfile的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS 上使用 Elastic Beanstalk 的 Go Web 应用程序未在日志中显示输出

将 AMI 映像用于 Elastic Beanstalk

Elastic Beanstalk 不适用于 SQLite

Elastic Beanstalk 上用于 Django 的 PostgreSQL

CloudFront 与 Elastic Beanstalk 结合用于动态应用程序?

将 GoDaddy 与 Elastic BeanStalk 链接