本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
ecs-deploy是一个用于在Amazon EC2容器服务(ECS)上实现自动蓝绿部署的脚本。它通过操作ECS的任务定义(Task Definition)和服务(Service)实体,实现零停机部署,确保新任务正常运行后再替换旧任务。
以下参数为部署所必需,部分可通过环境变量设置:
| 参数 | 描述 |
|---|---|
-k | --aws-access-key | AWS访问密钥ID,也可通过环境变量AWS_ACCESS_KEY_ID设置 |
-s | --aws-secret-key | AWS密钥,也可通过环境变量AWS_SECRET_ACCESS_KEY设置 |
-r | --region | AWS区域名称,也可通过环境变量AWS_DEFAULT_REGION设置 |
-p | --profile | AWS配置文件名称,设置后无需单独提供访问密钥和区域 |
--aws-instance-profile | 使用当前AWS实例关联的IAM角色,仅在AWS实例内部使用,设置后无需提供访问密钥 |
-c | --cluster | ECS集群名称 |
-n | --service-name | 要部署的服务名称(与-d二选一) |
-d | --task-definition | 要部署的任务定义名称(与-n二选一) |
-i | --image | 要运行的Docker镜像名称,格式:[域名][:端口][/仓库][/][镜像][:标签],例如:mariadb:latest、private.registry.com/repo/image:tag |
| 参数 | 描述 |
|---|---|
-a | --aws-assume-role | 用于ecs-deploy操作的AWS角色ARN |
-D | --desired-count | 服务中要保持运行的任务实例数量 |
-m | --min | 部署期间运行中任务的最小健康百分比(默认:100) |
-M | --max | 部署期间运行中任务的最大百分比(默认:200) |
-t | --timeout | 部署超时时间(默认:90秒) |
-e | --tag-env-var | 从环境变量获取镜像标签,覆盖-i中指定的标签 |
-to | --tag-only | 应用于任务中所有镜像的新标签,覆盖-i中指定的标签(适用于多容器任务) |
--max-definitions | 保留的任务定义修订版数量,超过则注销最旧版本(需≥1,仅在部署成功后执行) |
--task-definition-file | 用作部署任务定义的文件路径 |
--enable-rollback | 若超时前新版本未运行,则回滚任务定义 |
--use-latest-task-def | 使用最新创建的任务定义作为基础,而非最后使用的版本 |
--force-new-deployment | 强制服务进行新部署(默认:false) |
--skip-deployments-check | 跳过部署检查,适用于需要长时间终止旧任务的服务 |
--run-task | 立即运行创建的任务,设置后无需提供服务名称 |
--wait-for-success | 等待任务执行完成并返回退出码0 |
--launch-type | 任务启动类型(参考AWS ECS文档) |
--platform-version | Fargate平台版本(参考AWS ECS文档) |
--network-configuration | 任务网络配置(awsvpc网络模式必需,参考AWS ECS文档) |
--copy-task-definition-tags | 将现有任务定义标签复制到新修订版 |
-v | --verbose | 详细输出模式 |
--version | 显示版本信息 |
ecs-deploy -c production1 -n doorman-service -i docker.repo.com/doorman:latest
ecs-deploy -k ABC123 -s SECRETKEY -r us-east-1 -c production1 -n doorman-service -i docker.repo.com/doorman -m 50 -M 100 -t 240 -D 2 -e CI_TIMESTAMP -v
ecs-deploy -d open-door-task -i docker.repo.com/doorman:17
ecs-deploy -p PROFILE -c production1 -n doorman-service -i docker.repo.com/doorman -t 240 -e CI_TIMESTAMP -v
ecs-deploy -c staging -n core-service -to 0.1.899 -i ignore
--use-latest-task-def获取最新创建的任务定义)即使任务定义内容未变更,ECS服务仍会执行蓝绿部署。脚本通过更新容器镜像标签确保部署的差异性,支持静态标签(如
latest)或动态标签(如CI构建时间戳)。
以下是适用于ecs-deploy的IAM策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DeregisterTaskDefinition", "ecs:DescribeServices", "ecs:DescribeTaskDefinition", "ecs:DescribeTasks", "ecs:ListTasks", "ecs:ListTaskDefinitions", "ecs:RegisterTaskDefinition", "ecs:StartTask", "ecs:StopTask", "ecs:UpdateService", "iam:PassRole" ], "Resource": "*" } ] }
"You must specify a region"的错误,需检查环境变量或参数是否正确设置AWS访问密钥、密钥和区域。-t(超时时间)参数值,或使用--skip-deployments-check跳过部署检查。使用bats进行自动化测试,主要验证本地数据解析和处理逻辑。新功能或PR应尽可能提供测试用例。
可集成到Github Actions工作流中,示例配置如下:
deploy_to_ecs: name: '通过蓝绿部署将更新的容器镜像部署到ECS服务' runs-on: ubuntu-18.04 steps: - uses: silinternational/ecs-deploy@master env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: 'us-east-1' with: aws_access_key_cmd: '--aws-access-key' aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_key_cmd: '--aws-secret-key' aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} cluster_cmd: '--cluster' cluster: 'cluster-name' image_cmd: '--image' image: '{amazon_id}.dkr.ecr.us-east-1.amazonaws.com/cluster-name/image_name:latest' region_cmd: '--region' region: 'us-east-1' service_name_cmd: '--service-name' service_name: 'aws-service-name' timeout_cmd: '--timeout' timeout: '360'
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429