将 Docker 映像部署到 AWS 弹性 beantalk
Posted
技术标签:
【中文标题】将 Docker 映像部署到 AWS 弹性 beantalk【英文标题】:Deploying Docker image to AWS elastic beanstalk 【发布时间】:2020-12-16 22:28:21 【问题描述】:我在tutorial 之后创建了一个 Spring Boot 应用程序。按照教程,我设法使用以下命令对我的应用程序进行 dockerize:
docker-compose up
我的 docker-compose.yml 文件:
version: '3'
services:
app:
build: .
volumes:
- .:/app
- ~/.m2:/root/.m2
working_dir: /app
ports:
- 8080:8080
command: mvn clean spring-boot:run
当我之后检查 docker 图像时,我会看到应用程序的新图像。现在我想将此应用程序部署到 AWS 弹性 beantalk。使用 docker 平台创建环境时,我需要为应用程序代码上传什么?如何将我的 docker 镜像上传到 aws?我找不到关于如何将 dockerized 应用程序/图像部署到这样的 aws 的好教程。我是 docker 新手,因此我们将不胜感激!
【问题讨论】:
【参考方案1】:2020 年 10 月更新
Docker-compose 现在得到 EB 的正式支持:
AWS Elastic Beanstalk Adds Support for Running Multi-Container Applications on AL2 based Docker Platform原答案如下
EB 不支持 docker-compose。要制作您的容器(是单容器设置还是多容器设置?)您必须使用single 或multi-container EB 平台。
在这两种情况下,您都必须将您的 docker-compose.yml
翻译成 Dockerrun.aws.json。该文件具有不同的形式,具体取决于您使用的是单容器设置还是多容器设置。
如何将我的 docker 映像上传到 aws?
如果它的单一 EB 设置,您只需将您的 Dockerfile
提供给 EB,它会为您处理一切。对于多容器 EB,您可以将图像存储在公共存储库(例如 dockerhub)或私有存储库(例如 ECR)中。
要将您的docker-compose.yml
文件翻译成Dockerrun.aws.json
,您可以尝试使用container-transform 工具。这可能会有所帮助,但您很可能需要手动对生成的文件进行进一步调整。
【讨论】:
谢谢!这让我明白了很多!据我了解,从我的 docker-compose.yml 文件(我更新了我的问题以包含该文件),这是一个单一的容器设置。我对吗?还是服务不是容器?在单个 EB 设置的情况下,您说我可以将 Dockerfile 提供给 EB,我该怎么做?我需要在 EB cli 中执行此操作吗? @AlfieDanger 嗨。没问题。很高兴它有帮助 :-) 是的,你可以使用你的 Dockerfile。 EB 将构建映像。是的,您也可以使用 eb cli。详情here。 这个答案不再准确。截至 2020 年 10 月 7 日,Elastic Beanstalk does officially support multi-container setups using a docker-compose.yml file。 (这只是在我们上次部署时烧毁了我们,因为我们使用 docker-compose 进行本地开发测试,但只有生产环境中的 Dockerfile。) @beporter 感谢您告诉我。我会更新答案。以上是关于将 Docker 映像部署到 AWS 弹性 beantalk的主要内容,如果未能解决你的问题,请参考以下文章
带有 docker 的 AWS Elastic Beanstalk 版本不正确
将映像从 aws ecr 部署到 aws elastic beanstalk
用于在 AWS EC2 中构建和部署 docker 映像的 CI/CD 脚本
带有 Amazon ECR Docker 映像的 AWS Elastic Beanstalk
AWS Elastic Beanstalk Docker 来自 ECR 错误“Dockerrun.aws.json 中未指定 Docker 映像”