
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
ecs-deploy 是一款简化Amazon ECS部署的命令行工具,提供便捷的CLI接口用于执行频繁的复杂操作,支持任务定义管理、服务部署、扩缩容及任务运行等功能。
bash$ ecs deploy my-cluster my-service --tag 1.2.3
bash$ ecs deploy my-cluster my-service
bash$ ecs scale my-cluster my-service 4
bash$ ecs cron my-cluster my-task my-rule
bash$ ecs update my-task
项目已发布至PyPI,可通过以下命令安装:
bash$ pip install ecs-deploy
无需本地Python环境,可直接通过Docker运行ecs-deploy。1.7.1及以上版本已发布至Docker Hub:https://cloud.docker.com/repository/docker/fabfuel/ecs-deploy
bashdocker run docker.xuanyuan.run/fabfuel/ecs-deploy:1.10.2
master或latest对应最新稳定版develop对应最新开发版通过Docker运行时,需通过命令参数或环境变量提供AWS凭证和区域:
bashdocker run docker.xuanyuan.run/fabfuel/ecs-deploy:1.10.2 ecs deploy my-cluster my-service --region eu-central-1 --access-key-id ABC --secret-access-key ABC
基于AWS Python SDK(boto3),支持多种凭证配置方式(详见http://boto3.readthedocs.org/en/latest/guide/configuration.html#configuration):
bash$ aws configure
运行ecs命令时指定:
--access-key-id 和 --secret-access-key:AWS凭证--profile:AWS配置文件重新部署服务(可修改镜像、环境变量或命令)
调整服务任务数实现扩缩容
基于现有任务定义运行一次性任务(可覆盖命令或环境变量)
更新任务定义(创建新版本,不部署运行)
更新任务定义并同步事件规则(定时任务)
简单重新部署
无需修改,拉取最新镜像重新部署:
bash$ ecs deploy my-cluster my-service
部署新标签
更新所有容器镜像标签:
bash$ ecs deploy my-cluster my-service -t 1.2.3
更新单个容器镜像
bash$ ecs deploy my-cluster my-service --image webserver nginx:1.11.8
更新多个容器镜像
bash$ ecs deploy my-cluster my-service -i webserver nginx:1.9 -i application my-app:1.2.3
部署自定义任务定义
指定任务ARN、任务家族+版本或任务家族(默认最新版本):
bash# ARN方式 $ ecs deploy my-cluster my-service --task arn:aws:ecs:eu-central-1:123456789012:task-definition/my-task:20 # 家族+版本方式 $ ecs deploy my-cluster my-service --task my-task:20 # 家族方式(最新版本) $ ecs deploy my-cluster my-service --task my-task
重要:即使指定任务定义,
ecs-deploy仍会创建新版本任务定义以确保一致性(如镜像拉取),新版本基于指定任务而非当前服务使用的任务。
设置环境变量
添加/修改指定容器的环境变量:
bash$ ecs deploy my-cluster my-service -e webserver SOME_VARIABLE SOME_VALUE
批量更新环境变量
bash$ ecs deploy my-cluster my-service -e webserver VAR1 VAL1 -e webserver VAR2 VAL2 -e app APP_VAR APP_VAL
清除现有环境变量(仅保留指定)
bash$ ecs deploy my-cluster my-service -e webserver SOME_VAR SOME_VAL --exclusive-env
设置AWS参数存储中的秘密环境变量
重要:需ECS Agent版本≥1.22.0,否则任务部署失败。
bash# 参数名方式 $ ecs deploy my-cluster my-service -s webserver SOME_SECRET KEY_OF_SECRET_IN_PARAMETER_STORE # ARN方式 $ ecs deploy my-cluster my-service -s webserver SOME_SECRET arn:aws:ssm:<region>:<account>:parameter/KEY
清除现有秘密环境变量(仅保留指定)
bash$ ecs deploy my-cluster my-service -s webserver NEW_SECRET KEY --exclusive-secret
修改容器命令
bash# 简单命令 $ ecs deploy my-cluster my-service --command webserver "nginx" # 带参数命令 $ ecs deploy my-cluster my-service --command webserver "nginx -c /etc/nginx/nginx.conf" # JSON格式(含空格参数) $ ecs deploy my-cluster my-service --command webserver '["sh", "-c", "while true; do echo Time $(date); sleep 1; done;"]'
设置任务角色
bash$ ecs deploy my-cluster my-service -r arn:aws:iam::123456789012:role/MyEcsTaskRole
配置CPU和内存
--cpu <容器名> 0--memory <容器名> 256--memoryreservation <容器名> 256配置特权/必要标志
--privileged <容器名> True|False--essential <容器名> True|False配置日志
bash--log <容器名> awslogs awslogs-group <日志组名> --log <容器名> awslogs awslogs-region <区域> --log <容器名> awslogs awslogs-stream-prefix <流前缀>
配置端口映射
bash# 格式:--port <容器名> <容器端口> <主机端口> --port webserver 80 8080 # 清除现有端口映射:--exclusive-ports
配置卷和挂载点
bash# 定义卷 --volume data-volume /host/data # 挂载卷到容器 --mount webserver data-volume /container/data # 清除现有挂载:--exclusive-mounts
调整服务任务数:
bash$ ecs scale my-cluster my-service 4
基本运行
bash$ ecs run my-cluster my-task
指定任务版本
bash$ ecs run my-cluster my-task:123
覆盖环境变量
bash$ ecs run my-cluster my-task:123 -e my-container MY_VAR "my value"
覆盖命令
bash$ ecs run my-cluster my-task -c my-container "python script.py param1 param2"
Fargate集群运行
需指定启动类型、安全组、子网等参数:
bash$ ecs run my-fargate-cluster my-task --launchtype=FARGATE --securitygroup sg-01234567 --subnet subnet-01234567 --public-ip
通过API密钥和应用ID记录部署,支持两种配置方式:
CLI选项配置
bash$ ecs deploy my-cluster my-service --newrelic-apikey ABCDEFG --newrelic-appid 1234567890
环境变量配置
bash$ export NEW_RELIC_API_KEY=ABCDEFG $ export NEW_RELIC_APP_ID=1234567890 $ ecs deploy my-cluster my-service
默认超时300秒,可通过--timeout参数调整(单位:秒),设置为-1则不等待结果:
bash$ ecs deploy my-cluster my-service --timeout 600
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务