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

如何在Elastic Beanstalk部署依赖docker-compose.yml的Node.js应用

Elastic Beanstalk部署Docker Compose Node.js应用指导

前提准备

确保已配置AWS访问权限,可选择使用AWS CLI、Elastic Beanstalk CLI或AWS控制台操作。

步骤1:创建Dockerrun.aws.json配置文件

Elastic Beanstalk多容器Docker环境依赖该文件识别部署规则,根据你的场景选择对应版本:

版本2(手动定义服务)

适用于需要精细化配置容器的场景:

{
  "AWSEBDockerrunVersion": 2,
  "services": [
    {
      "name": "nodejs-app",
      "image": "node:18-alpine",
      "essential": true,
      "portMappings": [
        {
          "hostPort": 80,
          "containerPort": 3000
        }
      ],
      "mountPoints": [
        {
          "sourceVolume": "app",
          "containerPath": "/app",
          "readOnly": false
        }
      ],
      "command": ["npm", "start"]
    },
    {
      "name": "second-service",
      "image": "你的第二个容器镜像:标签",
      "essential": true
      // 按需添加端口映射、环境变量等配置
    }
  ],
  "volumes": [
    {
      "name": "app",
      "host": {
        "sourcePath": "/var/app/current"
      }
    }
  ]
}

版本3(直接引用docker-compose.yml)

如果你的docker-compose.yml已包含完整服务配置,可简化为:

{
  "AWSEBDockerrunVersion": 3,
  "dockerComposeFile": "docker-compose.yml"
}

注意:此版本要求docker-compose.yml的版本为3.x,且EB环境需支持对应Docker版本。

步骤2:调整docker-compose.yml适配EB环境

  • 端口映射:确保Node.js服务将容器端口映射到主机80端口(EB默认监听80),示例:
    services:
      nodejs-app:
        image: node:18-alpine
        working_dir: /app
        volumes:
          - .:/app
        ports:
          - "80:3000"
        command: npm start
      second-service:
        image: 你的第二个容器镜像:标签
        # 按需配置网络、依赖等
    
  • 凭据文件处理:
    • 敏感信息优先用EB环境变量存储:在EB控制台「配置 > 软件」中添加变量,Node.js应用通过process.env.变量名读取,避免将credentialsFile.json打包到部署包。
    • 若必须使用文件,确保volumes配置将本地文件挂载到容器内正确路径:
      volumes:
        - ./credentialsFile.json:/app/credentialsFile.json
      

步骤3:打包部署文件

将以下文件压缩为ZIP包(所有文件必须在压缩包根目录,禁止嵌套文件夹):

  • docker-compose.yml
  • Dockerrun.aws.json
  • nodejsApp.js
  • package.json
  • credentialsFile.json(未改用环境变量时需包含)

步骤4:部署到Elastic Beanstalk

方式一:EB CLI部署

  1. 初始化应用:
    eb init -p "Multi-container Docker" 你的应用名称
    
  2. 创建部署环境(首次部署):
    eb create 你的环境名称
    
  3. 后续更新部署:
    eb deploy
    

方式二:AWS控制台部署

  1. 登录Elastic Beanstalk控制台,点击「创建应用」。
  2. 填写应用名称,平台选择「Multi-container Docker」及对应版本。
  3. 上传步骤3的ZIP包,点击「创建环境」。
  4. 等待环境创建完成后即可访问应用。

常见问题排查

  • 容器启动失败:查看EB控制台「日志」,检查容器报错信息(如依赖缺失、路径错误)。
  • 端口无法访问:确认端口映射配置正确,EB环境安全组已开放80端口。
  • 敏感信息泄露:禁止将credentialsFile.json提交到版本控制,优先使用环境变量存储敏感数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:35:22