将多个docker容器部署到AWS ECS

时间:2017-11-01 00:33:01

标签: docker amazon-ec2 docker-compose amazon-ecs

我使用docker-compose创建了一个Docker容器。在我的本地环境中,我可以毫无问题地调出我的应用程序。

现在我想将所有docker容器部署到AWS EC2(ECS)。在浏览了ECS文档之后,我发现我们可以使用相同的docker-compose来使用ECS-CLI在ECS中进行部署。但是到目前为止,ECS-CLI不适用于Windows实例。所以现在我不知道如何使用我的docker-compose使用单个命令构建我的所有图像,并将其从Windows实例部署到ECS。

似乎我必须将我的docker容器逐个部署到ECS,如下面的步骤

  1. 从ECS控制面板中,创建一个Docker Image Repository。
  2. 使用ECS中的Docker凭据连接本地Docker客户端:
  3. 复制并粘贴上一步中的Docker登录命令。这将使您登录24小时
  4. 在本地标记您的图像,准备推送到您的ECS存储库 - 使用第一步中的repo URI
  5. 将图像推送到ECS repoository \
  6. 使用Web UI创建任务,或手动创建JSON文件
  7. 使用网络用户界面创建群集。
  8. 运行您的任务,指定要在
  9. 上运行的EC2群集

    在ECS中还有其他运行docker容器的方法吗?

2 个答案:

答案 0 :(得分:1)

我遇到了和你一样的情况。解决此问题的一种方法是使用Terraform将我们的容器部署为AWS ECS上的任务定义。

因此,我们使用docker-compose.yml在本地运行,而terraform是我们在AWS上的docker-compose的一种镜像。

另一个选项是Kubernetes,您可以将docker-compose翻译为Kubernetes resources

答案 1 :(得分:0)

当您使用ECS时,

Docker-Compose在这个地方出错了。

您可以在任务定义中配置多个容器,如CloudFormation docs

中所示
  

ContainerDefinitionsAWS::ECS::TaskDefinition资源的一个属性,用于描述Amazon EC2容器服务(Amazon ECS)容器的配置

Type: "AWS::ECS::TaskDefinition"
Properties: 
  Volumes:
    - Volume Definition
  Family: String
  NetworkMode: String
  PlacementConstraints:
   - TaskDefinitionPlacementConstraint
  TaskRoleArn: String
  ContainerDefinitions:
    - Container Definition

只需在那里列出多个容器,所有容器将在同一台机器上一起启动。