雖然有很多的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