Elastic Beanstalk出现502 Bad Gateway错误 Docker+Travis CI部署场景求解
问题排查与解决方案
1. 修正Dockerfile端口配置
你的Node应用实际监听端口为3000(从测试命令docker run -e CI=true -p 80:3000 brijesh:latest npm run test可验证),但Dockerfile中错误暴露了80端口,需修改:
FROM node:alpine WORKDIR '/app' COPY ./package.json ./ RUN npm install COPY . . # 修改为应用实际监听的3000端口 EXPOSE 3000 # 同时确认package.json中start命令启动的服务监听0.0.0.0:3000,不要绑定127.0.0.1 CMD ["npm", "run", "start"]
2. 修正Travis CI配置缩进错误
YAML配置对缩进高度敏感,你提供的.travis.yml中deploy段下的所有配置都缺少缩进,会导致部署配置不生效,修正后配置如下:
language: generic sudo: required services: - docker # Build testing container before_install: - docker build -t brijesh -f Dockerfile.dev . # Run Tests script: - docker run -e CI=true -p 80:3000 brijesh:latest npm run test -- --coverage deploy: provider: elasticbeanstalk region: "ap-south-1" app: "docker" env: "Docker-env" bucket_name: "elasticbeanstalk-ap-south-1-532163291253" bucket_path: "docker" on: branch: master access_key_id: $access_key secret_access_key: $secret_key
3. 新增端口映射配置(针对Amazon Linux 2 Docker平台)
如果你使用的是Amazon Linux 2版本的Elastic Beanstalk Docker平台,需要在项目根目录新增Dockerrun.aws.json文件,指定反向代理的端口映射规则:
{ "AWSEBDockerrunVersion": "1", "Ports": [ { "ContainerPort": 3000, "HostPort": 80 } ] }
4. 服务运行异常排查
如果修改后仍报错,可登录Elastic Beanstalk关联的EC2实例,执行以下命令排查容器运行状态:
- 查看运行中容器:
docker ps - 查看容器启动日志:
docker logs <你的容器ID> - 确认EC2实例安全组是否开放了80端口入站规则
内容的提问来源于stack exchange,提问作者Brijesh Muliya
相关产品推荐
相关产品推荐

