使用Docker ECS compose部署时如何选择VPC、域名、安全组等资源?
Docker ECS Context 相关资源配置方案
VPC选择配置
- 如果你绑定的是已有ECS集群,执行
docker context create ecs <自定义context名称>创建context时,选择Use an existing ECS cluster选项,选中目标集群后会自动加载集群对应的VPC,无需手动选择,可避免集群和VPC不匹配的问题 - 如果你需要自定义VPC或者创建新集群,既可以在交互式创建引导步骤中,从列出的当前区域可用VPC列表里直接选择,也可以用非交互式命令直接指定VPC ID:
docker context create ecs <自定义context名称> --vpc <目标VPC ID> - 注意事项:目标VPC需要和ECS集群在同一个AWS区域,公网可访问的服务需要VPC下至少有2个公有子网,内部服务需要配置私有子网+NAT网关保障集群网络连通性
安全组配置
- 测试场景可直接使用默认配置:Docker ECS Context会自动创建关联安全组,默认放行docker-compose.yml中声明的暴露端口到公网,部署完成后可在EC2控制台安全组页面手动调整规则
- 生产场景建议手动指定已有安全组,在docker-compose.yml中通过
x-aws-cloudformation扩展字段配置即可,示例如下:
services: web: image: nginx ports: - 80:80 x-aws-cloudformation: Resources: WebService: Properties: NetworkConfiguration: AwsvpcConfiguration: SecurityGroups: ["sg-<你的安全组ID>"]
- 注意事项:手动指定的安全组需要提前在对应VPC下创建,提前放行服务端口、集群内部通信端口、负载均衡健康检查端口所需的出入站规则
域名配置
- 提前在AWS Route53中创建对应域名的公有/私有托管区域,和ECS集群归属同一个AWS账号
- 需要HTTPS访问的场景,提前在AWS Certificate Manager中申请对应域名的SSL证书,证书区域需要和集群所在区域保持一致
- 在docker-compose.yml中添加对应扩展字段即可自动完成域名解析和证书绑定,示例如下:
services: web: image: nginx ports: - 80:80 - 443:443 x-aws-route53: hostname: <你的服务域名,如app.example.com> zone: <你的Route53托管区域ID> x-aws-certificate: arn: <你的ACM证书ARN>
- 不需要HTTPS的场景可直接省略
x-aws-certificate字段,部署完成后Docker会自动创建ALB负载均衡并添加Route53解析记录指向负载均衡地址
内容的提问来源于stack exchange,提问作者caeus
相关产品推荐
相关产品推荐

