Amazon web services AWS在更新后重新部署docker
我有一个aws ec2集群,它有一个运行任务的服务。假设任务的图像是Amazon web services AWS在更新后重新部署docker,amazon-web-services,docker,amazon-ec2,Amazon Web Services,Docker,Amazon Ec2,我有一个aws ec2集群,它有一个运行任务的服务。假设任务的图像是myapp:latest 当我想要更新应用程序时,我构建一个新的docker映像并将其推送到ECR 现在,如何将新的my app:latest图像滚动到我的实例中?更新Docker图像涉及两种方法 首先,只更新docker image并推送到ECR,而不修改标记aws.abc/myimage:latest,因此,在这种情况下,您不需要更新任务定义,只需重新部署服务即可。您可以从AWS控制台或AWS cli执行此操作 aws ec
myapp:latest
当我想要更新应用程序时,我构建一个新的docker映像并将其推送到ECR
现在,如何将新的
my app:latest
图像滚动到我的实例中?更新Docker图像涉及两种方法
首先,只更新docker image并推送到ECR,而不修改标记aws.abc/myimage:latest,因此,在这种情况下,您不需要更新任务定义,只需重新部署服务即可。您可以从AWS控制台或AWS cli执行此操作
aws ecs update-service --cluster ec2cluster_name --service service_name --force-new-deployment
这就是你所需要的
第二个,如果您使用不同的docker image标记,那么您还需要更新指向新docker映像的任务定义并重新部署服务
注册任务定义的新版本
现在指定任务定义修订版。除docker图像标签外,其余部分将是相同的
{
"containerDefinitions": [
{
"cpu": 0,
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/stage-app",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "ecs"
}
},
"environment": [
{
"name": "BRANCH",
"value":"staging"
},
{
"name": "NODE_ENV",
"value": "staging"
}
],
"memoryReservation": 400,
"ulimits": [
{
"name": "nofile",
"softLimit": 4000,
"hardLimit": 4000
}
],
"image": "***.dkr.ecr.us-west-2.amazonaws.com/stage:stage",
"dockerLabels": {
"Name": "stage-app"
},
"privileged": true,
"name": "stage-app"
}
],
"family": "stage-app"
}
注册此修订
aws ecs注册任务定义--cli输入jsonfile://stage-nodejs.json
使用新任务定义更新服务
aws ecs update-service --cluster cluster_name --service service_name --task-definition task_definition_name
重新部署服务
aws ecs更新服务--集群ec2cluster\u name--服务服务\u name--强制新部署
Betzael您也可以使用aws控制台执行此操作,如果您正在查找,请告诉我,以便我可以更新我的答案。