【发布时间】:2018-05-05 15:10:09
【问题描述】:
我们有一种情况,我们想以通常的 Elastic Beanstalk 方式运行 Django 服务器,同时连接一个自定义 Docker 容器以供 Django 网站使用。到目前为止,我基本上有如下.ebextensions配置文件:
packages:
yum:
ecs-init: []
files:
/etc/ecs/ecs.config:
mode: "000644"
owner/group: root
content: ECS_CLUSTER=${Ref: MyCluster}
commands:
01_start_docker: sudo service docker start
02_start_ecs: sudo start ecs
Resources:
MyCluster:
Type: AWS::ECS::Cluster
MyService:
Type: AWS::ECS::Service
Properties:
Cluster: ${Ref: MyCluster}
DesiredCount: 1
TaskDefinition: ${Ref: MyTask}
MyTask:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- ...
问题是 ECS 服务在 Elastic Beanstalk 提供的 EC2 实例注册到集群之前尝试启动。因此,部署到 Elastic Beanstalk 会挂起。如果我手动 SSH 到 EC2 实例并手动安装 ecs-init,创建 ecs.config,然后运行命令,则继续创建服务并成功创建 EB 环境。
有没有办法告诉服务等到 EB 的自动缩放组创建的 EC2 实例注册到集群?
更多上下文:
- 我们希望 Django 服务器能够通过 localhost 访问 Docker 容器,但我不反对在 Resources 中包含一个专门用于托管 Docker 容器的 EC2 实例,如果它在 auto-扩展的 EC2 实例
- 我们尝试了多 docker 容器方法,但这种方式似乎更接近 EB 的用法(将 Web 服务器文件直接放在环境中,而不是制作 docker 映像以供环境运行)
【问题讨论】:
标签: amazon-web-services amazon-elastic-beanstalk amazon-cloudformation