
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
ecs-deploy是一个实用脚本工具,利用Amazon ECS(Elastic Container Service)的任务定义(Task Definition)和服务(Service)实体实现自动蓝绿部署。通过更新服务以使用新的任务定义版本,实现零停机部署,确保服务持续可用。
-n | --service-name 要部署的服务名称 -d | --task-definition 要部署的任务定义名称 -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-access-key、aws-secret-key和region --aws-instance-profile 使用当前AWS实例关联的IAM角色,只能在运行中的AWS实例内使用。设置此参数则不需要aws-access-key和aws-secret-key -c | --cluster ECS集群名称 -i | --image 要运行的Docker镜像名称,格式示例:mariadb、mariadb:latest、silintl/mariadb:latest或private.registry.com:8000/repo/image:tag
-a | --aws-assume-role ecs-deploy操作要承担的AWS角色ARN -D | --desired-count 服务中要放置和保持运行的任务实例数 -m | --min 部署期间运行任务的最小健康百分比(默认:100) -M | --max 部署期间运行任务的最大百分比(默认:200) -t | --timeout 脚本监控ECS服务以确保新任务定义运行的超时时间,默认90秒 -e | --tag-env-var 从环境变量获取镜像标签名称,这将覆盖镜像名称参数中指定的值 -to | --tag-only 应用于任务中所有镜像的新标签(多容器任务),这将覆盖镜像名称参数中指定的值 --max-definitions 保留的任务定义修订版数量,超过此数量将注销最旧的修订版 --enable-rollback 如果新版本在超时前未运行,则回滚任务定义 --use-latest-task-def 使用最新创建的任务定义作为基础,而不是最后使用的 --force-new-deployment 强制服务的新部署,默认为false --skip-deployments-check 跳过对需要太长时间来停止旧任务的服务的部署检查 --run-task 立即运行创建的任务,如果设置此参数,则不需要service-name -v | --verbose 详细输出 --version 显示版本
bashcurl https://raw.githubusercontent.com/silinternational/ecs-deploy/master/ecs-deploy | sudo tee /usr/bin/ecs-deploy sudo chmod +x /usr/bin/ecs-deploy
使用环境变量进行AWS设置的简单服务部署:
bashecs-deploy -c production1 -n doorman-service -i docker.repo.com/doorman:latest
所有选项示例:
bashecs-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
使用新镜像更新任务定义:
bashecs-deploy -d open-door-task -i docker.repo.com/doorman:17
使用配置文件(例如用于STS委托凭据):
bashecs-deploy -p PROFILE -c production1 -n doorman-service -i docker.repo.com/doorman -t 240 -e CI_TIMESTAMP -v
仅更新ECS任务中找到的任何镜像的标签(支持多容器任务):
bashecs-deploy -c staging -n core-service -to 0.1.899 -i ignore
在EC2容器服务中,共同提供有用应用程序的容器组(例如数据库、Web前端等)的关系在任务定义(Task Definition)中指定。任务定义充当实际运行该组容器的模板,由此产生的容器组称为任务(Task)。
任务定义会自动进行版本控制,其实际名称由两部分组成:系列名称和版本号,例如:phpMyAdmin:3
Amazon使用服务(Services)实体来管理任何时候运行的任务数量。服务是任务定义的指定修订版与应从中运行的任务数量之间的绑定。
Amazon允许更新此绑定,以更改运行的任务数量或更改它们所基于的任务定义。在后一种情况下,它将执行蓝绿部署,即在终止任何旧任务之前,首先确保新任务已启动并准备好使用,从而确保服务不中断。
ecs-deploy执行以下操作:
--use-latest-task-def,则拉取最新创建的任务定义脚本使用指定的image参数作为修改键来更改容器镜像使用的标签。它查找与指定参数具有相同仓库名称的镜像,并将其标签更新为指定参数中的标签。
在某些情况下,您可能希望使用环境变量作为镜像的标签名称。例如,在持续集成和部署环境中,可以使用唯一的时间戳作为标签。
使用-e参数可以提供保存标签值的环境变量名称:
bashecs-deploy -c production1 -n doorman-api -i my.private.repo/doorman-api -e CI_TIMESTAMP
以下是适用于AWS IAM的自定义策略示例:
json{ "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. You can also configure your region by running "aws configure".
自动化测试使用https://github.com/sstephenson/bats%E6%89%A7%E8%A1%8C%E3%80%82%E6%B5%8B%E8%AF%95%E7%9A%84%E7%9B%AE%E6%A0%87%E6%98%AF%E7%A1%AE%E4%BF%9D%E6%9B%B4%E6%96%B0/%E6%9B%B4%E6%94%B9%E4%B8%8D%E4%BC%9A%E7%A0%B4%E5%9D%8F%E6%A0%B8%E5%BF%83%E5%8A%9F%E8%83%BD%E3%80%82%E7%94%B1%E4%BA%8E%E9%83%A8%E5%88%86%E5%8A%9F%E8%83%BD%E4%B8%8EAWS API交互,目前并非所有ecs-deploy功能都可测试,仅本地数据的解析/处理部分进行了测试。
任何新功能和拉取请求都应附带测试(如果可能)。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务