如何为运行Docker容器的Elastic Beanstalk创建应用新版本(偏好AWS CLI)
使用AWS CLI部署ECR镜像到Elastic Beanstalk(无需EB CLI)
核心思路
通过将指向ECR镜像的docker-compose.yml打包上传到S3,再用AWS CLI创建应用版本并部署,全程无需重新构建镜像或使用EB CLI。
步骤1:准备docker-compose.yml文件
编写仅包含ECR镜像引用的配置文件,示例如下(替换为你的实际信息):
version: '3' services: app: image: 123456789012.dkr.ecr.us-east-1.amazonaws.com/your-repo:v1.0.0 ports: - "80:80"
注意:需确保Elastic Beanstalk环境的EC2实例角色(默认是
aws-elasticbeanstalk-ec2-role)已附加AmazonEC2ContainerRegistryReadOnly权限策略,否则实例无法拉取ECR镜像。
步骤2:打包配置文件为ZIP包
直接将docker-compose.yml打包成压缩包:
zip deploy.zip docker-compose.yml
步骤3:上传ZIP包到S3存储桶
如果没有可用的S3桶,先创建一个(替换桶名和区域):
aws s3 mb s3://your-eb-deploy-bucket --region us-east-1
然后上传打包好的文件:
aws s3 cp deploy.zip s3://your-eb-deploy-bucket/deploy-v1.0.0.zip
步骤4:创建Elastic Beanstalk应用版本
使用AWS CLI创建关联S3包的应用版本(替换应用名、版本标签、S3路径和区域):
aws elasticbeanstalk create-application-version \ --application-name your-qa-app \ --version-label v1.0.0-ecr \ --source-bundle S3Bucket=your-eb-deploy-bucket,S3Key=deploy-v1.0.0.zip \ --region us-east-1
步骤5:部署到QA环境
将新创建的应用版本部署到目标环境:
aws elasticbeanstalk update-environment \ --environment-name your-qa-env \ --version-label v1.0.0-ecr \ --region us-east-1
步骤6:验证部署状态
查看环境状态,确认部署完成:
aws elasticbeanstalk describe-environments \ --environment-names your-qa-env \ --region us-east-1
额外注意事项
- 执行AWS CLI的用户需要具备
elasticbeanstalk:*、s3:*(针对部署桶)、iam:PassRole的权限; - 若使用较新版本的docker-compose语法,需确保Elastic Beanstalk环境的Docker平台版本支持对应语法;
- 版本标签建议使用唯一标识(如Git commit hash),避免版本覆盖。
内容的提问来源于stack exchange,提问作者DrTeeth
相关产品推荐
相关产品推荐

