虽然有很多的CI/CD工具在那里,因为我在我的早期推出,我决定写一个小脚本,而不是有CI/CD管道这样做。
这里是一个一键部署脚本中,我使用ecs-deploy script作为依赖,实现了泊坞窗图像的滚动部署到ECS写道。
您可以在开发或构建/部署框中本地运行此脚本,也可以使用Jenkins或本地构建工具。
#!/bin/bash
# automatically login to AWS
eval $(aws ecr get-login)
# build local docker image and push repo to AWS
docker build -t <yourlocaldockerimagetag> .
docker tag <yourlocaldockerimagetag>:latest <yourECSRepoURL>:latest
docker -D -l debug push <yourECSRepoURL>:latest
# deploy to ECS
ecs-deploy/ecs-deploy -m 50 -k <access-key> -s <secret-key> -r <aws-region> -c <cluster-name> -n <service-name> -i <yourECSRepoURL>:latest
参数:
- 集群名:在ECS您的群集名称
- 服务名称:你曾在ECS
- yourECSRepoURL创建您的服务名称:ECS Repository URL
- yourlocaldockerimagetag:任何地方形象的标签名
- 访问键:为部署
您的AWS访问键
- 的密钥:您的AWS密钥
请务必在此之前安装ecs-deploy脚本。
-m 50告诉它即使节点数量下降到50%也可以部署。理想情况下,您将有一个额外的节点来部署,但如果您无法负担这种设置,这将确保部署继续发生。
如果您还使用ELB(负载平衡器),则目标组的默认取消注册延迟为5分钟,这有点过分。解除注册延迟是等待现有请求完成的时间,然后ECS会向您的码头容器发送SIGTERM或SIGINT。您应该通过转到EC2仪表板中的目标组来降低此值,然后单击编辑属性进行编辑。否则,您的部署可能会永远存在。
你只是想更新服务?如果是这样的话:http://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html – Snarf