You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Amazon Linux 2的Elastic Beanstalk中使用多容器Docker?

AWS Elastic Beanstalk 多容器部署迁移示例(适配Docker running on 64bit Amazon Linux 2)

Amazon Linux 2 Docker平台默认同时支持Dockerrun.aws.json v3和docker-compose.yml两种配置方式,二选一即可,以下是可直接运行的生产级示例,覆盖常见的前后端+API服务的多容器场景

方案1:Dockerrun.aws.json v3 配置示例

{
  "AWSEBDockerrunVersion": "3",
  "containerDefinitions": [
    {
      "name": "frontend-app",
      "image": "public.ecr.aws/nginx/nginx:alpine",
      "portMappings": [
        {
          "hostPort": 80,
          "containerPort": 80
        }
      ],
      "essential": true,
      "mountPoints": [
        {
          "sourceVolume": "frontend-static",
          "containerPath": "/usr/share/nginx/html"
        }
      ],
      "environment": [
        {
          "name": "API_HOST",
          "value": "backend-api"
        }
      ]
    },
    {
      "name": "backend-api",
      "image": "public.ecr.aws/docker/library/node:18-alpine",
      "portMappings": [
        {
          "hostPort": 3000,
          "containerPort": 3000
        }
      ],
      "essential": true,
      "environment": [
        {
          "name": "NODE_ENV",
          "value": "production"
        }
      ]
    }
  ],
  "volumes": [
    {
      "name": "frontend-static",
      "host": {
        "sourcePath": "/var/app/current/frontend/dist"
      }
    }
  ]
}
  • AWSEBDockerrunVersion 必须指定为3,对应Amazon Linux 2平台的格式要求
  • essential 标记为true的容器如果意外退出,EB会自动重启整个实例组
  • 容器之间可直接通过name字段的值作为域名互相通信,示例中前端容器可直接通过http://backend-api:3000访问后端服务

方案2:docker-compose.yml 配置示例

和上面的场景完全对应,配置更简洁:

version: "3.8"
services:
  frontend-app:
    image: public.ecr.aws/nginx/nginx:alpine
    ports:
      - 80:80
    volumes:
      - frontend-static:/usr/share/nginx/html
    environment:
      - API_HOST=backend-api
    restart: always
  backend-api:
    image: public.ecr.aws/docker/library/node:18-alpine
    ports:
      - 3000:3000
    environment:
      - NODE_ENV=production
    restart: always
volumes:
  frontend-static:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /var/app/current/frontend/dist

如果选择docker-compose方式,不需要额外编写Dockerrun.aws.json文件,EB会自动识别根目录下的docker-compose.yml完成部署

部署操作步骤

  • 项目打包时,将配置文件(Dockerrun.aws.json 或 docker-compose.yml)放在压缩包根目录,不要嵌套外层文件夹
  • 登录EB控制台,创建/更新环境时,平台选择Docker running on 64bit Amazon Linux 2的最新版本
  • 上传打包好的zip包提交部署即可,部署完成后可通过EB环境域名访问验证服务可用性

常见注意事项

若使用私有镜像仓库(如私有ECR、Docker Hub私有库),需要在配置中补充凭证信息:v3格式下添加authentication字段指定存储.dockercfg凭证的S3路径,docker-compose格式下可将凭证直接打包到部署包的.docker/config.json路径
多容器的日志会自动收集到CloudWatch,和原有v2版本的日志采集逻辑一致,不需要额外配置

内容的提问来源于stack exchange,提问作者Natheeshkumar Rangasamy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:15:03