AWS CodePipeline - 使用现有 Dockerrun.aws.json 部署到 Elastic Beanstalk

Posted

技术标签:

【中文标题】AWS CodePipeline - 使用现有 Dockerrun.aws.json 部署到 Elastic Beanstalk【英文标题】:AWS CodePipeline - Deploy to Elastic Beanstalk with existing Dockerrun.aws.json 【发布时间】:2018-05-16 20:06:54 【问题描述】:

我有一个在 Elastic Beanstalk 上运行的多容器 Docker 应用程序,并在 CodePipeline 上使用 CI/CD。我的应用程序分为多个存储库和多个图像:

前端存储库/图像/管道 后端存储库/图像/管道 部署存储库(Dockerrun.aws.jsonnginx/conf.d/ 等)

我唯一部署到 Elastic Beanstalk 的是我的部署存储库。前端和后端存储库没有关于 Dockerrun.aws.json 文件、环境变量等的信息。

我的问题是,在我的前端和后端存储库的 CodePipeline 的最新步骤中,它尝试将其推送到 Elastic Beanstalk 并失败,因为输出工件中不包含 Dockerrun.aws.json 文件。

所以我想要做的是,管道应该构建图像,将其推送到 ECR(我已经成功完成),然后触发 Elastic Beanstalk 更新/下拉图像。我该怎么做呢?我不想将工件从构建推送到 Elastic Beanstalk。

【问题讨论】:

【参考方案1】:

似乎 Elastic Beanstalk 旨在使用单个“单一存储库”而不是作为多存储库应用程序运行。因此,我没有使用多个存储库,而是将它们合并到一个存储库中。

我当前的存储库现在看起来像这样:

.git/
backend_app/
frontend_app/
Dockerrun.aws.json

现在,每当我推送到我的存储库时,AWS CodePipeline 都会获取更改并可以成功地将其部署到我的 Elastic Beanstalk 应用程序。

对于想要使用微服务、多 repo 或类似方式运行应用程序的任何人,我想 Elastic Beanstalk 可能不是正确的方法。

【讨论】:

以上是关于AWS CodePipeline - 使用现有 Dockerrun.aws.json 部署到 Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS CDK 在 AWS Codepipeline 中部署 Python Lambda 函数

AWS CodeBuild + CodePipeline:“找不到匹配的工件路径”

如何停止 aws codepipeline 部署阶段

AWS CodePipeline:同时运行多个管道

AWS CodePipeline 不遵守 CodeBuild 设置

将参数添加到 AWS CloudFormation / CodePipeline 堆栈