我们在 Amazon Linux 1 上运行 Elastic Beanstalk 多容器 Docker 环境,该环境已被弃用,需要迁移到 Amazon Linux 2。
该文档提供了两种执行此操作的选项:
据我了解,他们推荐第一个选项,因为 ECS 平台与 AL1 上的当前平台更相似。
然而,我想知道这两个选项之间的实际差异是什么。ECS 在这方面到底扮演什么角色,与纯 Docker 相比有什么优势?
在 ECS 上,我们使用 Dockerrun.aws.json 进行部署,该文件是通过容器转换从 docker-compose.yml 生成的。这可行,但如果我们可以跳过该转换,那就太好了。使用第二种方案,在没有ECS的情况下,是否可以直接部署docker-compose.yml文件?
我们使用单个实例,没有负载均衡器(但希望为将来保留该选项)。
有没有人通过这两种选择完成了此迁移,并且可以提供有关该过程的一些见解?
我去年问过这个问题,但没有得到任何答案或点赞,所以它被社区机器人删除了。我再次发布它,因为我现在必须进行迁移,并且有人建议我这样做。
与此同时,Amazon Linux 2023 已经发布,但问题基本保持不变(Docker 平台还是 ECS 平台?)。
我现在正在进行迁移,可以分享到目前为止我学到的东西。
随着 Amazon Linux 2023 的发布,他们还更新了文档。我发现以下几点与做出决定最相关:
来源
强调我的。总结一下:ECS平台提供了更容易的迁移,但是Docker平台更简单并且使用的资源更少。
由于无论如何我们都必须更新配置,因此迁移到 Docker 平台似乎是一个好主意,即使这会增加工作量,因为我更喜欢使用“使用更少资源”的“更简单的方法”。直接使用 docker-compose 比使用 ECS 任务更熟悉。
之前,我们使用container-transform将 docker-compose 文件转换为 Dockerrun.aws.json 。在Docker平台上,就不需要这一步了,我们可以直接部署
docker compose
。我必须
docker-compose.yml
为每个容器将以下选项添加到文件中:mem_limit
env_file: .env
restart: no
对于essential: false
位于Dockerrun.aws.json
部署工件中不需要进行其他更改。我们现在将 the
docker-compose.yml
与 the 捆绑在一起.ebextensions
,就像我们之前对 the 所做的那样Dockerrun.aws.json
。