Elastic Beanstalk部署Docker应用报Dockerrun.aws.json版本错误
问题根因
- 你选用的
64bit Amazon Linux 2 v3.4.16 running Docker平台不支持Dockerrun.aws.jsonv2格式,该格式是旧版Amazon Linux 1 Multi-Container Docker平台的遗留规范,在Amazon Linux 2平台上已被废弃。 - 报错中提到的"v3版本"并非Dockerrun.aws.json的格式版本,Amazon Linux 2 Docker平台的多容器编排不再使用Dockerrun.aws.json作为配置文件,因此没有公开的v3格式定义。
- 你使用的转换工具生成的是适配旧平台的配置,无法在新平台上运行,这也是本地运行和云端部署同时报版本错误的核心原因。
可落地解决方案
方案一:使用Amazon Linux 2平台原生Docker Compose支持(推荐,兼容eb local命令)
- 废弃现有转换生成的
Dockerrun.aws.json文件,直接在项目根目录放置标准的docker-compose.yml配置文件,Amazon Linux 2 Docker平台会原生识别该文件并完成多容器部署。 - 配置调整要点:
- 删除原配置中所有
links字段,平台内置的DNS会自动解析服务名,容器之间直接使用服务名即可互通 - 仅保留Nginx服务的80端口主机映射,EB负载均衡会自动将公网流量转发到该端口
- 部署包中不要残留
Dockerrun.aws.json文件,避免平台误判配置格式
- 删除原配置中所有
- 配置完成后,本地执行
eb local run即可正常启动全栈环境验证,执行eb deploy即可完成云端部署。
方案二:回退到旧版Amazon Linux 1平台(不推荐)
如果必须使用已生成的v2版本Dockerrun.aws.json,需要将EB平台切换为64bit Amazon Linux running Multi-container Docker版本。该平台基于已停止主流支持的Amazon Linux 1,存在安全隐患,后续会逐步停止服务。
额外配置避坑
- 不建议在EB实例内部署PostgreSQL数据库:EB实例重建、版本更新时会清空实例本地存储,造成数据库数据丢失,生产环境请使用独立的RDS数据库服务,通过安全组配置网络互通即可。
- 你当前配置中使用的
alpine:python、nodejs镜像无官方对应标签,部署时会出现镜像拉取失败,请替换为正确的官方镜像标签,例如python:3.11-alpine、node:18-alpine。
内容的提问来源于stack exchange,提问作者Daniel N.
相关产品推荐
相关产品推荐

