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

从 Docker 容器部署 Elastic Beanstalk 应用程序

Elastic Beanstalk 支持从 Docker 容器部署 Web 应用程序。使用 Docker 容器,您可以定义自己的运行时环境。还可以选择自己的平台、编程语言以及其他平台通常不支持的任何应用程序依赖项(如程序包管理器或工具)。Docker 容器具有独立性且包含您的 Web 应用程序运行所需的所有配置信息和软件。在 Elastic Beanstalk 控制台中定义的所有环境变量都会传递到容器。

通过将 Docker 与 Elastic Beanstalk 结合使用,您的基础设施可以处理容量预配置、负载均衡、扩展和应用程序运行状况监控的所有细节。您可以在支持与 Elastic Beanstalk 集成的系列服务的环境中轻松管理 Web 应用程序。这些环境包括但不限于 VPCRDSIAM。有关 Docker 的更多信息,包括如何安装它、它所需的软件以及如何使用 Docker 映像启动 Docker 容器,请参阅 Docker:Linux 容器引擎

本章中的主题假设您对 Elastic Beanstalk 环境有一些了解。如果您以前未使用过 Elastic Beanstalk,请尝试使用入门教程以了解基本知识。

Docker 平台系列

Elastic Beanstalk 的 Docker 平台系列包括多个平台。在 Amazon Linux 2 上运行的 Docker 平台提供了最多的好处,例如长期支持。下面各节详细介绍 Elastic Beanstalk 提供的 Docker 平台以及迁移到 Amazon Linux 2 的推荐路径。

Docker 平台

Elastic Beanstalk 可以将 Docker 映像和源代码部署到运行 Elastic Beanstalk Docker 平台的 EC2 实例。该平台提供多容器(和单容器)支持。还可以利用 Docker 平台上的 Docker Compose 工具来简化应用程序配置、测试和部署。

此 Amazon Linux 2 Docker 平台提供以下优势:

  • 长期支持。 Amazon Linux 2 上的 Docker 平台具有长期支持,同时提供安全性和功能更新。

  • Docker Compose 功能。 此平台将允许您利用 Docker Compose 工具提供的功能来定义和运行多个容器。您可以包含 docker-compose.yml 文件以部署到 Elastic Beanstalk。

  • 使用来自公有或私有的存储库的应用程序映像。 Elastic Beanstalk 调用 Docker Compose 命令行界面,同时处理 docker-compose.yml 文件以提取应用程序映像并将其作为容器化应用程序运行。

  • 在部署期间构建容器映像。 在将应用程序映像部署作为容器运行之前,您无需预先构建应用程序映像。在部署过程中,您可以通过在 Dockerfile 中指定依赖关系从头开始构建容器映像。

有关使用 Docker 环境的示例和入门帮助的更多信息,请参阅 使用 Docker 平台。有关容器定义格式及其用法的更多信息,请参阅Docker 配置

以下各节与使用较早 Amazon Linux AMI 平台版本(Amazon Linux 2 之前的版本)的 Elastic Beanstalk Docker 环境相关。

基于 Amazon Linux AMI 的 Docker 平台可用于将 Docker 映像(如 Dockerfile 或 Dockerrun.aws.json 定义中所述)和源代码部署到在 Elastic Beanstalk 环境中运行的 EC2 实例。此 Docker 平台对于每个实例只运行一个容器。

有关使用 Docker 环境的示例和入门帮助,请参阅 使用 Docker 平台。有关容器定义格式及其用法的更多信息,请参阅Docker 配置

注意

此平台仅支持 Amazon Linux AMI 操作系统(Amazon Linux 2 之前的版本)。Docker 平台通过 Amazon Linux 2 提供多容器 Docker 功能。

另一个通用平台是多容器 Docker,它使用 Amazon Elastic Container Service (Amazon ECS) 将多个 Docker 容器协调部署到 Elastic Beanstalk 环境中的 Amazon ECS 集群。环境中的每个实例都运行相同的容器组,如 Dockerrun.aws.json 文件所定义。如果您的 Elastic Beanstalk 环境使用 Amazon Linux AMI 平台版本(在 Amazon Linux 2 之前),请使用多容器平台将多个 Docker 容器部署到每个实例。

有关多容器 Docker 平台及其用途的更多信息,请参阅使用多容器 Docker 平台 (Amazon Linux AMI)多容器 Docker 配置主题详细介绍了 Dockerrun.aws.json 格式的版本 2,它与 Docker 平台使用的版本类似,但不兼容。此外,还有一个教程,可指导您从头开始部署多容器环境。描述的环境在一个单独的容器中运行一个 PHP 网站(NGINX 代理正在此网站前面运行)。

除两种通用 Docker 平台外,还有几个预配置 Docker 平台分支,可用来在带 GlassFish 的 Java带 uWSGI 的 Python 等若干常见软件堆栈之一中运行您的应用程序。如果预配置的容器符合应用程序所使用的软件,则使用预配置容器。

注意

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

有关更多信息,请参阅预配置 Docker 容器