在AWS ECS上部署多个Docker容器

6

我使用docker-compose创建了Docker容器。在我的本地环境中,我可以轻松启动应用程序。

现在,我想将所有的Docker容器部署到AWS EC2(ECS)中。在查看ECS文档后,我发现我们可以使用ECS-CLI来利用相同的docker-compose在ECS上部署。但是,目前ECS-CLI在Windows实例上不可用。因此,我不确定如何使用我的docker-compose通过单个命令构建所有映像并从Windows实例部署到ECS。

似乎我必须按以下步骤一个接一个地部署我的Docker容器:

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

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


1
只需启动一个Ubuntu EC2实例,安装ecs-cli,在其中使用ecs-cli使用您的docker-compose文件部署服务。成功部署后,终止Ubuntu EC2实例即可。 - Rafaf Tahsin
2个回答

3
当您使用ECS时,Docker-Compose在这个地方是错误的。
您可以在任务定义中配置多个容器,如 CloudFormation文档中所示:

ContainerDefinitions AWS :: 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

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


是的,没错。我一开始提出这个问题时并不知道。现在我正在使用AWS任务定义来启动我的两个Docker容器。但是我在使用ECS代理启动Docker容器时遇到了问题。我将会创建一个单独的问题来解决这个问题,并在这里链接那个问题。 - babs84
感谢您的反馈。请使用复选标记将此问题标记为已解决。随时添加有关ECS的其他信息,以帮助解决问题的主题。 - StephenKing
正如我在之前的评论中提到的,我在运行任务时遇到了问题。我已经为此创建了一个单独的问题。https://stackoverflow.com/q/47127132/4435358 。如果您能够请也看一下那个问题。再次感谢。 - babs84

1
我遇到了和你一样的情况。解决这个问题的一种方法是使用 Terraform 将我们的容器部署为 AWS ECS 上的任务定义。
因此,我们使用 docker-compose.yml 在本地运行,而 Terraform 是我们在 AWS 上的 docker-compose 的镜像。
另一个选择是 Kubernetes,您可以将其从 docker-compose 翻译成 Kubernetes 资源

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接