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
相关产品推荐
相关产品推荐

