预配置 Docker 容器 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

预配置 Docker 容器

Elastic Beanstalk 有一个运行 Docker 容器的平台分支,该容器预配置了 Java EE GlassFish 应用程序服务器软件堆栈。您可以使用预配置的 Docker 容器在本地开发和测试应用程序,然后在与本地环境相同的 Elastic Beanstalk 环境中部署应用程序。

备注
  • Elastic Beanstalk 还支持具有针对 Go 和 Python 预配置的 Docker 容器的平台分支。这些平台分支将按计划停用。

  • 所有预配置的 Docker 平台分支都使用 Amazon Linux AMI 操作系统(在 Amazon Linux 2 之前)。要将 GlassFish 应用程序迁移到 Amazon Linux 2,请使用通用 Docker 平台并将 GlassFish 和您的应用程序代码部署到 Amazon Linux 2 Docker 映像。有关详细信息,请参阅 将 GlassFish 应用程序部署到 Docker 平台:迁移到 Amazon Linux 2 的路径

以下部分提供了使用预配置的 Docker 容器将应用程序部署到 Elastic Beanstalk 的详细步骤。

开始使用预配置 Docker 容器

本部分介绍如何在本地开发示例应用程序,然后使用预配置的 Docker 容器将应用程序部署到 Elastic Beanstalk。

设置本地开发环境

对于本演练,我们使用 GlassFish 示例应用程序。

设置环境

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

    ~$ mkdir eb-preconf-example ~$ cd eb-preconf-example
  2. 将示例应用程序代码下载到新文件夹。

    ~$ wget https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-v1_cn.zip ~$ unzip docker-glassfish-v1_cn.zip ~$ rm docker-glassfish-v1_cn.zip

在本地开发和测试

开发示例 GlassFish 应用程序

  1. Dockerfile 添加到应用程序的根目录文件夹。在该文件中,指定要用于运行本地预配置 Docker 容器的 AWS Elastic Beanstalk Docker 基本映像。稍后,您将应用程序部署到 Elastic Beanstalk 预配置的 Docker GlassFish 平台版本。选择此平台版本使用的 Docker 基本映像。要了解此平台版本的当前 Docker 映像,请参阅 AWS Elastic Beanstalk 平台 指南中的 AWS Elastic Beanstalk 支持的平台 页面的预配置 Docker 部分。

    例 ~/Eb-preconf-example/Dockerfile

    # For Glassfish 5.0 Java 8 FROM amazon/aws-eb-glassfish:5.0-al-onbuild-2.11.1

    有关使用 Dockerfile 的更多信息,请参阅Docker 配置

  2. 构建 Docker 映像。

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

    注意

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

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

    http://localhost:3000

    此时会显示以下 Web 页面。

    
              Web 浏览器中显示的 GlassFish 示例应用程序

部署到 Elastic Beanstalk

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

将应用程序部署到 Elastic Beanstalk

  1. 在应用程序的根文件夹中,将 Dockerfile 重命名为 Dockerfile.local。Elastic Beanstalk 若要使用 Dockerfile,则必须执行此步骤,该文件中包含关于 Elastic Beanstalk 在 Elastic Beanstalk 环境中的每个 Amazon EC2 实例上构建自定义 Docker 映像的正确说明。

    注意

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

  2. 创建应用程序源包。

    ~/eb-preconf-example$ zip myapp.zip -r *
  3. 使用下面的预配置链接打开 Elastic Beanstalk 控制台:console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced

  4. 对于 Platform (平台),在 Preconfigured – Docker (预配置 – Docker) 下,选择 Glassfish

  5. 对于 Application code (应用程序节点),选择 Upload your code (上传您的节点),然后选择 Upload (上传)

  6. 选择 Local file (本地文件),再选择 Browse (浏览),然后打开您刚刚创建的应用程序源包。

  7. 选择 Upload (上传)

  8. 选择 Review and launch (复查并启动)

  9. 查看可用设置并选择 Create app (创建应用程序)

  10. 创建环境后,您可以查看已部署的应用程序。选择控制台控制面板顶部显示的环境 URL。