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