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.json
、nginx/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:“找不到匹配的工件路径”