Docker Compose集成ECS时如何直接指定EC2启动类型
官方Docker Compose ECS集成EC2启动类型指定说明
当前官方Docker Compose ECS集成没有提供直接显式指定EC2启动类型的标准配置字段。
默认启动类型判定逻辑
- 无特殊资源声明的普通Compose配置,转换生成CloudFormation模板时,ECS服务默认采用Fargate启动类型。
- 当配置中声明Fargate不支持的资源需求时,转换逻辑会自动将启动类型切换为EC2,你测试到的GPU资源预留场景就属于这类触发条件——由于Fargate不支持GPU资源挂载,集成会自动判定需要EC2启动类型承载任务。
强制使用EC2启动类型的可行方案
如果不需要GPU这类特殊资源,又要强制指定EC2启动类型,可以通过Compose的AWS专属扩展字段x-aws-cloudformation直接覆盖生成的ECS服务资源属性,配置示例如下:
version: "3.9" services: web: image: "yeasy/simple-web:latest" # 扩展字段直接覆盖CloudFormation资源属性 x-aws-cloudformation: Properties: LaunchType: EC2
执行docker --context <my context> compose convert命令转换后,生成的模板中WebService资源就会固定将LaunchType设置为EC2。
注意事项
手动强制指定EC2启动类型时,需要提前自行准备好对应ECS集群的EC2容量提供者、匹配任务资源规格(vCPU、内存、特殊硬件等)的EC2工作节点,否则ECS任务会因为没有可用计算资源调度失败。Fargate模式下集成会自动处理无服务器容量调度,EC2模式下不会自动为你创建和配置EC2实例。
内容的提问来源于stack exchange,提问作者Eugene Loy
相关产品推荐
相关产品推荐

