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

Elastic Beanstalk部署Docker容器启动后异常终止求助

问题求助:Elastic Beanstalk部署Docker容器启动后意外终止

各位技术同仁,我在将项目Docker镜像上传至Elastic Beanstalk平台时,遇到如下错误:

Instance deployment: The Docker container unexpectedly ended after it was started

我是相关技术的新手,无法定位问题原因,恳请各位提供帮助。以下是我的相关配置文件:

Dockerfile配置

WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --force
COPY . .
ENV APP_PORT 8080
EXPOSE 8080
CMD [ "node", "app.js" ]

.gitlab-ci.yml配置

stages:
  - build
  - run

variables:
  APP_NAME: ${CI_PROJECT_NAME}
  APP_VERSION: "1.0.0"
  S3_BUCKET: "${S3_BUCKET}"
  AWS_ID: ${MY_AWS_ID}
  AWS_ACCESS_KEY_ID: ${MY_AWS_ACCESS_KEY_ID}
  AWS_SECRET_ACCESS_KEY: ${MY_AWS_SECRET_ACCESS_KEY}
  AWS_REGION: us-east-1
  AWS_PLATFORM: Docker

create_eb_version:
  stage: build
  image: python:latest
  allow_failure: false
  script: |
    pip install awscli #Install awscli tools

    echo "Creating zip file ${APP_NAME}"
    python zip.py ${APP_NAME}

    echo "Creating AWS Version Label"
    AWS_VERSION_LABEL=${APP_NAME}-${APP_VERSION}-${CI_PIPELINE_ID}
    S3_KEY="$AWS_VERSION_LABEL.zip"

    echo "Uploading to S3"
    aws s3 cp ${APP_NAME}.zip s3://${S3_BUCKET}/${S3_KEY} --region ${AWS_REGION}

    echo "Creating app version"
    aws elasticbeanstalk create-application-version \
      --application-name ${APP_NAME} \
      --version-label $AWS_VERSION_LABEL \
      --region ${AWS_REGION} \
      --source-bundle S3Bucket=${S3_BUCKET},S3Key=${S3_KEY} \
      --description "${CI_COMMIT_DESCRIPTION}" \
      --auto-create-application \
  only:
    refs:
      - main

deploy_aws_eb:
  stage: run
  image: coxauto/aws-ebcli
  when: manual
  script: |
    AWS_VERSION_LABEL=${APP_NAME}-${APP_VERSION}-${CI_PIPELINE_ID}

    echo "Deploying app to tf test"
    eb init -i ${APP_NAME} -p ${AWS_PLATFORM} -k ${AWS_ID} --region ${AWS_REGION}
    echo "Deploying to enviroment"
    eb deploy ${APP_ENVIROMENT_NAME} --version ${AWS_VERSION_LABEL}
    echo "done"
  only:
    refs:
      - main

排查建议

  • 本地验证Docker镜像:执行docker build -t my-app .构建镜像,再用docker run -p 8080:8080 my-app启动,检查容器是否能稳定运行,确认app.js无启动报错。
  • 查看EB实例日志:在AWS控制台进入对应环境,下载完整日志包,重点查看/var/log/docker下的容器日志、/var/log/eb-engine.log里的部署细节,日志会明确容器终止的具体原因(比如依赖缺失、代码错误、端口占用)。
  • 检查打包内容:确认zip.py打包的文件包含Dockerfile、app.js、package.json等所有必要文件,EB的Docker环境要求根目录存在Dockerfile才能正常构建。
  • 验证环境变量:确认部署环境中已正确设置APP_ENVIROMENT_NAME变量,脚本依赖该变量指定部署目标环境。
  • 检查IAM权限:确认用于部署的IAM用户拥有elasticbeanstalk:CreateApplicationVersion、s3:PutObject等必要操作权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:01:23