从 Docker 容器部署 Elastic Beanstalk 应用程序
Elastic Beanstalk 支持从 Docker 容器部署 Web 应用程序。使用 Docker 容器,您可以定义自己的运行时环境。您可以选择自己的平台、编程语言以及其他平台不支持的任何应用程序依赖项 (如包管理器或工具)。Docker 容器具有独立性,包含您的 Web 应用程序运行所需的所有配置信息和软件。在 Elastic Beanstalk 控制台中定义的所有环境变量都会传递到容器。
将 Docker 与 Elastic Beanstalk 配合使用会得到一种基础设施,可以自动处理容量配置、负载均衡、扩展和应用程序运行状况监控的详细信息。您可以在支持与 Elastic Beanstalk 集成的服务范围的环境中管理 Web 应用程序,包括但不限于 VPC、RDS和 IAM。有关 Docker 的更多信息,包括如何安装、所需软件以及如何使用 Docker 映像启动 Docker 容器,请参阅 Docker:Linux 容器引擎。
多容器 Docker 平台
Elastic Beanstalk 上的标准通用和预配置 Docker 平台仅支持每个 Elastic Beanstalk 环境对应一个 Docker 容器。为了充分利用 Docker,Elastic Beanstalk 允许您创建您的 Amazon EC2 实例可在其中同时运行多个 Docker 容器的环境。
下图显示一个配置了三个 Docker 容器的示例 Elastic Beanstalk 环境,这三个 Docker 容器在一个 Auto Scaling 组中的每个 Amazon EC2 实例上运行:
使用多个 Elastic Load Balancing 侦听器
您可以在多容器 Docker 环境中配置多个 Elastic Load Balancing 侦听器,以支持代理的入站流量或不在默认 HTTP 端口上运行的其他服务。
在您的源包中创建一个 .ebextensions
文件夹并添加一个文件扩展名为 .config
的文件。以下示例显示了用于在端口 8080 上创建 Elastic Load Balancing 侦听器的配置文件。
.ebextensions/elb-listener.config
option_settings: aws:elb:listener:8080: ListenerProtocol: HTTP InstanceProtocol: HTTP InstancePort: 8080
.ebextensions/elb-ingress.config
Resources: port8080SecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 8080 FromPort: 8080 SourceSecurityGroupName: { "Fn::GetAtt": ["AWSEBLoadBalancer", "SourceSecurityGroup.GroupName"] }