Pet*_*epo 36 update containers amazon-web-services docker amazon-ecs
建议使用哪种方法来更新在 Amazon ECS 中运行的服务的容器?
该AWS文档说:“如果你已经更新了应用程序的泊坞图像,你可以创建一个新的任务定义与图像,并将其部署到您的服务,一次一个任务。” 这几乎是当前文档中当前可用的所有内容(2015 年 4 月 13 日)。
我是否理解正确,在 Amazon ECS 中更新我的应用程序容器的唯一方法是创建一个新任务,然后停止旧任务并启动新任务?
我已经成功地在 Core OS 和 Fleectl 中使用了“最新”标签。这样做的好处是不需要为新的更新更改 Docker 镜像的标签,因为重新加载服务将看到新的更改并更新容器(使用相同的标签“最新”)。
您使用哪种方法在 Amazon ECS 中使用更新的 docker 镜像更新您的服务?
小智 20
不确定这是否被认为是废弃的问题 - 在解决我的问题时偶然发现了这个问题,现在添加我的解决方案,现在它已经解决了。
要使用新容器更新服务,您需要:
如果服务任务没有更新到最新版本,请检查“事件”选项卡是否有错误。例如,可能 ECS 无法启动您的服务的新版本:您的集群中只有一个 ec2 实例,并且应用程序端口已在主机上使用。在这种情况下,将“min health/max health”限制设置为“0%, 100%”——这样,ECS 将选择在部署新容器之前杀死旧容器。这也会在几分钟内发生 - 如果您没有看到即时反馈,请不要着急。
下面是一个示例部署脚本,用于在预配置的集群和服务中更新容器。请注意,如果您的意思是“使用系列中的最新版本”,则无需指定版本。
awsRegion=us-east-1
containerName=..
containerRepository=..
taskDefinitionFile=...
taskDefinitionName=...
serviceName=...
echo 'build docker image...'
docker build -t $containerName .
echo 'upload docker image...'
docker tag $containerName:latest $containerRepository:$containerName
docker push $containerRepository:$containerName
echo 'update task definition...'
aws ecs register-task-definition --cli-input-json file://$taskDefinitionFile --region $awsRegion > /dev/null
echo 'update our service with that last task..'
aws ecs update-service --service $serviceName --task-definition $taskDefinitionName --region $awsRegion > /dev/null
Run Code Online (Sandbox Code Playgroud)
小智 8
要更新您的应用程序,请更新任务定义,然后更新服务。请参阅http://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-service.html
归档时间: |
|
查看次数: |
22899 次 |
最近记录: |