AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 Elastic Beanstalk 的基于 Docker 的 Go 平台

按照此处的步骤完成使用适用于 Go 的预配置 Docker 容器将 Go 应用程序部署到 Elastic Beanstalk 的过程。

设置本地开发环境

本教程使用了 Go“Hello World”应用程序。

设置开发环境

  1. 为示例应用程序创建新文件夹。

    ~$ mkdir eb-go-sample ~$ cd eb-go-sample
  2. 在应用程序的根目录文件夹中,创建名为 server.go 的文件。在该文件中包含以下内容:

    例 ~/eb-go-sample/server.go

    package main import "github.com/go-martini/martini" func main() { m := martini.Classic() m.Get("/", func() string { return "Hello world!" }) m.Run() }

    注意

    • 应用程序源包必须包含名为 main 的程序包。在程序包内,您必须具有 main 函数才能让容器执行。

    • 需要导入的依赖项 (例如,Martini 程序包 go-martini) 将下载到容器并在部署过程中安装。因此,您不需要将依赖项包含在上传到 Elastic Beanstalk 的应用程序源包中。

    • Elastic Beanstalk 会将容器的 GOPATH 环境变量设置为 /go

使用 Docker 在本地开发和测试

设置环境后,您便做好了创建和测试 Go 应用程序的准备。

开发示例 Go 应用程序

  1. Dockerfile 添加到应用程序的根目录文件夹。在该文件中,指定要用于运行本地预配置 Docker 容器的 Elastic Beanstalk Docker 基础映像。Elastic Beanstalk 使用此映像运行所有后续 Dockerfile 指令。

    注意

    仅包含具有您的平台版本的 Docker 映像名称的指令。有关预配置 Docker 映像名称,请参阅 Elastic Beanstalk 支持的平台。有关使用 Dockerfile 的更多信息,请参阅单容器 Docker 配置。有关预配置 Docker 平台的 Dockerfile 示例,请参阅 示例:使用 Dockerfile 来自定义和配置预配置 Docker 平台

    您可以使用以下示例:

    例 ~/eb-go-sample/Dockerfile

    # For Go 1.3 FROM golang:1.3.3-onbuild # For Go 1.4 FROM golang:1.4.1-onbuild
  2. 构建 Docker 映像。

    ~/eb-go-sample$ docker build -t my-app-image .
  3. 从该映像运行 Docker 容器。

    注意

    必须包含 -p 标志才能将容器中的端口 3000 映射到 localhost 端口 8080。Go 应用程序的 Elastic Beanstalk 预配置 Docker 容器始终在容器中的端口 3000 上公开应用程序。-it 标志将映像作为交互式进程运行。当容器存在时,-rm 标志将清理容器文件系统。您可以选择包含 -d 标志以将映像作为守护程序运行。

    ~/eb-go-sample$ docker run -it --rm -p 8080:3000 my-app-image
  4. 要查看示例应用程序,请将以下 URL 键入您的 Web 浏览器。

    http://localhost:8080

部署到 Elastic Beanstalk

在测试应用程序后,可随时将其部署到 Elastic Beanstalk。

将应用程序部署到 Elastic Beanstalk

  1. 在应用程序的根文件夹中,将 Dockerfile 重命名为 Dockerfile.local。若要让 Elastic Beanstalk 使用 Dockerfile,此步骤是必需的。Dockerfile 包含供 Elastic Beanstalk 在 Elastic Beanstalk 环境中的每个 Amazon EC2 实例上构建自定义 Docker 映像的正确指令。

    注意

    如果您的 Dockerfile 包含修改基础 Go Docker 映像的指令,则无需执行此步骤。如果您的 Dockerfile 仅包含用来指定从中构建容器的基本映像的 Dockerfile 行,则无需使用 FROM在这种情况下,Dockerfile 是冗余的。

  2. 创建应用程序源包。有关更多信息,请参阅 创建应用程序源包

  3. 创建可将应用程序部署到的 Elastic Beanstalk 环境。如需分步指导,请参阅 管理和配置 AWS Elastic Beanstalk 应用程序。在适当的步骤中,在 Environment Type 页面 Predefined configuration 列表中的 Preconfigured - Docker 下,选择 Go