Jenkins:使用 docker compose 部署到 AWS ECS

Posted

技术标签:

【中文标题】Jenkins:使用 docker compose 部署到 AWS ECS【英文标题】:Jenkins: deploy to AWS ECS with docker compose 【发布时间】:2017-09-30 04:24:31 【问题描述】:

我有一些误解。我有 Jenkins 实例、ESC 集群和 docker-compose 配置文件来组合我的图像并链接容器。

在 git push 之后,我的 Jenkins 实例从所有 repos(webapp、api、lb)中获取所有源并进行构建、复制文件等操作。

之后,我的 Dockerfiles 的所有文件夹都处于“准备编写”状态。

在这个阶段,我不知道应该如何在 AWS 上 ping 我的 ESC 集群以从 Jenkins 中获取所有图像并使用我的 docker-compose.yml 配置来组合它们。

如果有任何有用的信息,我会很高兴的。

谢谢。

【问题讨论】:

【参考方案1】:

首先,您需要将图像从 Jenkins 服务器推送到 ECR。将每个图像单独推送到独立的存储库。

接下来,您必须创建一个 ECS 集群。在此集群中,您创建一个在集群中运行的 ECS 服务。对于此服务,您创建并配置一个任务定义来运行您的链接容器。您不需要为此使用 docker-compose:在 ECS 中,您可以在 Task Definition 的配置中定义容器之间的链接。您可以将多个容器定义添加到同一个任务定义中,ECS 会将它们链接在一起。

您可以通过向 Jenkins 服务器附加一个允许其调用 ECS API 的实例配置文件来自动执行所有这些操作。为了部署新镜像,您需要做的就是将它们推送到 ECR 存储库,并创建一个指向它们的新任务定义,并更新运行这些任务定义的服务。 ECS 会自动代表您触发蓝绿部署。

【讨论】:

回答问题。据我所知 esc-cli compose 命令可以将 compose 文件转换为任务定义。我的意思是我想使用 compose manifest 的通用方法,而不是手动创建 json 格式的 ecs 任务定义。你怎么看? 啊哈好吧,这有点改变。我没有使用过ecs-cli api,但我可以从docs 中看到,它通过运行ecs-cli compose --project-name hello-world --file hello-world.yml service scale 2 创建了您需要的一切。目前尚不清楚该命令是否将图像推送到 ECR,但我可以看到有一个 ecs-cli push 命令。那么需要检查两件事:1)您是否看到 ECR 中列出的任何图像? 2)任务定义json文件中图片的URI是什么样的?

以上是关于Jenkins:使用 docker compose 部署到 AWS ECS的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins:使用 docker compose 部署到 AWS ECS

docker-compose部署配置jenkins

jenkins的docker-compose部署

docker-compose 安装 jenkins 指定版本

Docker Compose安装部署Jenkins

docker-compose可持续集成之jenkins