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

AWS CodeBuild执行docker-compose build/push命令失败求助

多容器Docker应用CI/CD部署故障排查

Build阶段docker-compose build失败(exit status 1)

  • Dockerfile执行错误:查看CloudBuild日志中build阶段的详细输出,定位到Dockerfile里具体失败的命令——比如npm install依赖拉取失败、apt-get update源不可用、文件路径不存在或权限不足等。
  • docker-compose配置问题:
    • 本地执行docker-compose --file=docker-compose-prod.yml config验证配置语法是否合法。
    • 确认服务定义中的build上下文路径是CodeBuild工作目录下存在的路径,镜像标签格式合规。
    • 排查depends_on等依赖配置是否引用了不存在的服务。
  • CodeBuild环境权限/资源限制:
    • 检查CodeBuild的IAM角色是否有拉取基础镜像的权限(若用Docker Hub镜像,需确认无限流或已配置认证)。
    • 查看CodeBuild实例磁盘使用情况,大镜像构建可能因空间不足失败。
  • 环境变量缺失:确认docker-compose-prod.yml中用到的ECR仓库地址、版本号等环境变量已在CodeBuild项目中配置。

POST_BUILD阶段push时EOF错误

  • ECR权限不足:确保CodeBuild的IAM角色包含以下权限:ecr:GetAuthorizationToken、ecr:InitiateLayerUpload、ecr:UploadLayerPart、ecr:CompleteLayerUpload、ecr:BatchCheckLayerAvailability、ecr:PutImage。
  • 镜像标签配置错误:检查docker-compose-prod.yml中每个服务的image字段是否为ECR完整地址(格式:{AWS账号ID}.dkr.ecr.{区域}.amazonaws.com/{仓库名}:{标签}),标签错误会导致push时连接异常。
  • Docker环境兼容性问题:确认CodeBuild环境中Docker daemon与docker-compose版本兼容(如docker-compose v2要求Docker daemon 20.10+),可在buildspec.yml的pre_build阶段添加docker --version和docker-compose --version命令验证版本。
  • 网络配置问题:若CodeBuild部署在自定义VPC中,需确保VPC已配置ECR网关端点,且安全组/网络ACL允许出站到ECR的流量。

配置文件关键检查点

buildspec.yml

  • 确认pre_build阶段已正确执行ECR登录命令:
    aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $ECR_REPO_URI
    
    验证环境变量$ECR_REPO_URI是否正确设置。
  • 检查build阶段的docker-compose命令是否传递了必要的构建参数(如--build-arg)。
  • 确认POST_BUILD阶段的push命令正确(如docker-compose --file=docker-compose-prod.yml push)。

docker-compose-prod.yml

  • 移除build阶段不需要的volumes配置(CodeBuild环境的本地路径与容器路径无关联)。
  • 确保每个服务的image字段指向正确的ECR仓库。

Dockerrun.aws.json

  • 确认容器的image字段与push到ECR的镜像地址完全一致,无拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:20:30