使用 ecs-cli 在 AWS 上部署 docker 时遇到问题

     2023-03-04     136

关键词:

【中文标题】使用 ecs-cli 在 AWS 上部署 docker 时遇到问题【英文标题】:Trouble deploying docker on AWS with ecs-cli 【发布时间】:2016-11-06 14:40:41 【问题描述】:

我在 ECS 上有一个 repo,使用 ecs-cli 创建了一个集群

ecs-cli configure --region=us-west-2 --profile=<MY PROFILE> --cluster=cluster-1

ecs-cli up --capability-iam --keypair=<MY KEYPAIR>

但是接下来执行撰写文件的步骤是当它失败时

ecs-cli compose --file docker-compose.yml --project-name drafter-project service up

这是我的 docker-compose.yml 文件:

version: '2'
services:
  rabbit:
    image: rabbitmq
    hostname: rabbit1
    ports:
       - 5672:5672
       - 15672:15672
  drafter:
    build: .
    depends_on: 
      - rabbit

我在这里遇到的错误是:

Error registering task definition 
error=ClientException: Container.image should not be null or empty.
Create task definition failed 
error=ClientException: Container.image should not be null or empty.

我不确定任务定义是什么或它需要什么。

【问题讨论】:

注意 ecs-cli compose 和 docker compose 并不相同,因此您应该仔细检查 ecs 和 yaml 文件的语法。 (健全性检查 - 我假设您的配置文件确实以 .yaml 结尾?) 服务和任务是 ecs 的重要组成部分。您应该能够在 ecs 服务上找到相同的文档。 ecs-cli compose 应该为您创建任务和定义。从看起来像 ecs 的错误来看,发现容器映像为空。你可以添加你的 docker compose yml 吗?注意:ECS cli compose 不支持 compose 版本 2,只支持 docker compose 1 命令的子集。这是文档:docs.aws.amazon.com/AmazonECS/latest/developerguide/… docs.docker.com/compose/compose-file/#versioning 有版本 1 的文档和示例 在执行 CLI 命令之前构建并上传图像到 ecr。没有其他选择。您可以使用 ECR 或 docker hub 来托管图像。 @Shibashis 那么,没有办法在本地构建您的图像并告诉 ecs-cli 从那里拉取它们吗? 【参考方案1】:

据我了解,ecs-cli 对完整的 Docker Compose 文件语法的支持非常有限。例如,您应该会看到有关 WARN[0000] Skipping unsupported YAML option for service... option name=build service name drafter 的警告

原因是您使用的 ecs-cli 版本期望所有服务都是图像。因此,drafter 需要一个图像,您可以通过docker build 或传统的docker-compose 调用生成该图像(但是您需要维护两个版本的撰写文件——传统版本和与 ecs 兼容的版本。

注意:听起来他们可能计划在未来支持build,至少根据我之前看到的一个 github 评论(抱歉,已经关闭标签,所以无法链接到它)。

【讨论】:

那么解决办法是什么?我该怎么办? @Dror -- 我放弃了尝试使用 ECS,所以我的知识有限,我不确定 ecs-cli 自从我发帖后是否已更改,但如果没有t,我相信您只需在本地(无需 AWS 工具)为您计划的容器创建映像,然后相应地使用它们。 我还集中手动设置安装了 docker 的 EC2 节点并从那里获取 您可能想查看 Google Compute Engine,它可能有更好的 Compose 支持。再说一次,只是猜测,我还没有尝试过。【参考方案2】:

问题出在您的撰写文件中:

drafter:
    build: .

那不行,你应该先构建并推送镜像:

docker build -t drafter .
docker tag drafter:latest somepath.amazonaws.com/drafter:latest
docker push somepath.amazonaws.com/drafter:latest

然后做:

drafter:
    image: somepath.amazonaws.com/drafter:latest

请注意,latest 也可能是一个版本。

【讨论】:

我试过这个,但还是没能成功。见question

使用 Elastic Beanstalk 在 AWS 上部署 NodeJS API

】使用ElasticBeanstalk在AWS上部署NodeJSAPI【英文标题】:NodeJSAPIdeployementonAWSwithElasticBeanstalk【发布时间】:2020-08-2406:29:54【问题描述】:我正在寻找使用AWS部署我的NodeJSAPI。我尝试使用ElasticBeanstalk,但总是遇到这个问题:Imageoftheerr... 查看详情

使用 AWS Elastic Beanstalk 在 AWS 上部署 Spring Boot 应用程序

】使用AWSElasticBeanstalk在AWS上部署SpringBoot应用程序【英文标题】:DeployingaSpringBootApplicationonAWSUsingAWSElasticBeanstalk【发布时间】:2017-09-2822:10:37【问题描述】:我想,但我没有看到上传jar文件的选项,只有zip和war(?!)在本教程中,他... 查看详情

使用 docker composer 在 AWS beanstalk 上部署 docker

】使用dockercomposer在AWSbeanstalk上部署docker【英文标题】:DeploydockeronAWSbeanstalkwithdockercomposer【发布时间】:2016-10-1403:58:15【问题描述】:我正在尝试在AWSbeanstalk上部署多个node.js微服务,我希望它们部署在同一个实例上。这是我第... 查看详情

如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?

】如何使用awscli在ElasticBeanstalk上上传和部署?【英文标题】:HowtouploadanddeployonElasticBeanstalkwiththeawscli?【发布时间】:2018-12-2116:39:06【问题描述】:我的设置:-我的Dockerrun.aws.json文件中指定了一个多码头应用程序。-我的应用程... 查看详情

使用 ElasticBeanstalk 在 AWS 上部署在 Python 3.6 上运行的 Django 项目

】使用ElasticBeanstalk在AWS上部署在Python3.6上运行的Django项目【英文标题】:DeployingDjangoproject,runningonPython3.6,onAWSusingElasticBeanstalk【发布时间】:2019-01-1001:49:42【问题描述】:我之前也使用Python2.7使用过这个resource但是,这个错误对... 查看详情

使用 postgres 在 AWS 上部署的 django 项目 - 如何创建数据库

】使用postgres在AWS上部署的django项目-如何创建数据库【英文标题】:djangoprojectdeployedonAWSusingpostgres-howtocreateadatabase【发布时间】:2021-11-0502:46:56【问题描述】:我有一个使用awsebcli在AWS上部署的django项目。我需要提供一个数据库... 查看详情

使用 Docker 在 AWS Elastic Beanstalk 上部署失败

】使用Docker在AWSElasticBeanstalk上部署失败【英文标题】:DeploymentonAWSElasticBeanstalkwithDockerfails【发布时间】:2016-06-1907:30:54【问题描述】:我正在使用Play框架开发一个Web应用程序,并使用单个docker容器和负载均衡器在AWSElasticBeanstal... 查看详情

在 AWS 上使用 WebSocket 实现的 Web 服务上的蓝绿部署

】在AWS上使用WebSocket实现的Web服务上的蓝绿部署【英文标题】:Blue-greendeploymentonWebServicewithWebSocketImplementationonAWS【发布时间】:2016-08-0800:30:04【问题描述】:我目前正在为几个Web服务实现Web套接字。但想知道这种有状态的http连... 查看详情

使用 CLI 在 AWS Elastic Beanstalk 上部署 RoR 项目

】使用CLI在AWSElasticBeanstalk上部署RoR项目【英文标题】:DeployingRoRprojectonAWSElasticBeanstalkusingCLI【发布时间】:2012-11-1306:07:09【问题描述】:一些背景。我在AWS上创建了一个帐户,以试用用于部署RoR应用程序的AWSElasticBeanstalk解决方... 查看详情

使用 EJS 的 ExpressJS 在 AWS Amplify 上部署时无法加载静态资产

】使用EJS的ExpressJS在AWSAmplify上部署时无法加载静态资产【英文标题】:ExpressJSusingEJSfailtoloadstaticassetswhendeployedonAWSAmplify【发布时间】:2021-03-0809:42:38【问题描述】:我正在使用ExpressJS和EJS视图引擎开发一个Web应用程序,它将部... 查看详情

Terraform + AWS ECS,持续部署流程?

...2021-12-3117:52:42【问题描述】:在过去6年多的时间里,我使用AWSElasticBeanstalk和Ruby平台来托管和部署我的Rails应用程序,目前正在迁移到AWSECS。因此,我不得不使用docker-compose对我的应用和其他服务进行dock 查看详情

在 AWS 上使用 Kubernetes 部署 HTTP/2 Web 服务器

】在AWS上使用Kubernetes部署HTTP/2Web服务器【英文标题】:DeployinganHTTP/2web-serverwithKubernetesonAWS【发布时间】:2019-01-0601:58:57【问题描述】:我有一个Go服务器,目前在AWS上运行Kubernetes。该网站位于route-53和管理SSL终止的ELB下。现在... 查看详情

在 AWS 弹性 beantalk 上使用 webpacker gem 部署 rails react 应用程序

】在AWS弹性beantalk上使用webpackergem部署railsreact应用程序【英文标题】:DeployrailsreactappwithwebpackergemonAWSelasticbeanstalk【发布时间】:2018-07-2517:08:42【问题描述】:我正在尝试使用AWSElasticBeanstalk部署使用webpackergem创建的rails5.1&react... 查看详情

通过 Github 操作在 AWS ECS 上使用 Docker Compose 进行部署

】通过Github操作在AWSECS上使用DockerCompose进行部署【英文标题】:DeploywithDockerComposeonAWSECSwithGithubactions【发布时间】:2022-01-0105:36:35【问题描述】:我最近开始尝试使用ECS、DockerCompose和上下文,这真的很有趣。我已经设法通过我... 查看详情

在 AWS 上部署 Web 应用程序

...个网站要部署。该网站由PHP、HTML、CSS和Javascript制作,并使用在NodeJS上开发的API来访问数据库。有没有办法在一个AWSElasticBeanstalk应用程序上部署所有这些(接口+NodeJSAPI)?或者我应该只在AWSElasticBean 查看详情

在 AWS Elastic Beanstalk 上使用 Wordpress CMS - 部署问题(页面未加载)

】在AWSElasticBeanstalk上使用WordpressCMS-部署问题(页面未加载)【英文标题】:UsingWordpressCMSonAWSElasticBeanstalk-Troubledeploying(pagedoesn\'tload)【发布时间】:2015-03-0917:10:59【问题描述】:我正在尝试让Wordpress在AWSElasticBeanstalk上运行。我... 查看详情

在 AWS EKS 上使用 Kubernetes 身份验证方法部署 Hashicorp Vault 时出现证书错误

】在AWSEKS上使用Kubernetes身份验证方法部署HashicorpVault时出现证书错误【英文标题】:CertificateerrorwhendeployingHashicorpVaultwithKubernetesAuthMethodonAWSEKS【发布时间】:2019-05-0820:40:28【问题描述】:我正在尝试在AWSEKS上使用KubernetesAuthMethod... 查看详情

在 AWS 弹性 beantalk 上部署 Flask 应用程序

...发布时间】:2014-11-2919:51:11【问题描述】:我一直在尝试使用EBS部署烧瓶应用程序。我按照指示thislink,但最后我得到this。还有什么方法可以像在其他ec2实例中一样ssh进入我的ebs卷。这是awslog的链接。另外作为替代方案,我如何... 查看详情