使用 Jenkins 或 Job Scheduler 在 AWS ECS 上自动部署 Docker 容器

Posted

技术标签:

【中文标题】使用 Jenkins 或 Job Scheduler 在 AWS ECS 上自动部署 Docker 容器【英文标题】:Automatic deployment of Docker containers on AWS ECS using Jenkins or Job Scheduler 【发布时间】:2016-05-20 22:32:56 【问题描述】:

目前我们构建 Docker 容器并将它们发布到 Amazon ECR。我们已经创建了 TaskDefinition,并且能够在 ECS 集群上手动部署它们。因此,新部署需要手动更新 TaskDefinition。

现在我们希望自动化部署,因此当使用 Jenkins 成功构建 Docker 映像并发布到 ECR 存储库时,我们希望将当前运行的版本替换为新构建的版本。

接下来,我们希望让人们有机会启动 1 个或多个 docker 容器组合的特定版本。关于我们如何在不手动更新 TaskDefinitions 的情况下实现连续循环的任何建议?

【问题讨论】:

【参考方案1】:

This article 描述了如何使用 Jenkins 对 ECS 进行持续部署。它在构建映像并推送后使用 shell 脚本以新的任务定义修订更新 ECS 服务。希望能帮助到你。

【讨论】:

文章写完两年多了,还没有新的方法吗?【参考方案2】:

一个更简单的解决方案可能是从这里使用 ecs-deploy 脚本:

https://github.com/silinternational/ecs-deploy

在我的容器构建并部署到 dockerhub 之后,只需:

ecs-deploy -k $AWS_KEY -s $AWS_SECRET -r $AWS_REGION -c $CLUSTER_NAME -n $SERVICE_NAME -i $DOCKER_IMAGE_NAME

就是这样。

【讨论】:

这比答案中链接的文章更有用,它在尝试使用生成的 JSON 文件时会给我带来错误。未来读者请注意:ecs-deploy 仅更新任务定义的 1 个容器,因此如果您有多个容器,则需要使用不同的参数多次运行它,或者使用其他解决方案。 如何在VSTS powershell中安装aws-cli?

以上是关于使用 Jenkins 或 Job Scheduler 在 AWS ECS 上自动部署 Docker 容器的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jenkins 或 Job Scheduler 在 AWS ECS 上自动部署 Docker 容器

Toad For Oracle中的不同作业,Sched Chain,Sched Job,Sched Windows和Schedule Job类

oracle里的job和schedule有啥区别

jenkins之定时任务配置

Jenkins:批量自动将 Maven 类型 Job 迁移到自由风格类型

dba_job dba_schedule_jobs