AWS Code Build 错误:无法连接到 docker 守护程序

AWS Code Build 错误:无法连接到 docker 守护程序

我尝试使用 aws code build service 构建 docker 镜像,然后将其推送到 ECR。我使用的命令"buildspec.yml"如下所示。

version: 0.2
phases:
  install:
    runtime-versions:
        docker: 18
 pre_build:
      - $(aws ecr get-login --no-include-email --region us-east-1)
      - REPOSITORY_URI=XXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/devopswebbuild
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG


但我在构建过程中出现错误,docker 命令无法连接到 docker 守护程序。请帮我解决这些问题。

Docker 构建项目配置详细信息如下:

代码

构建错误详细信息如下:

在此处输入图片描述

答案1

我正在回答自己的问题,所以它可能会帮助遇到同样问题的人。解决方案非常简单,我需要检查我没有注意到的特权选项卡。

在此处输入图片描述

解决方案 :

  1. 从 AWS CodeBuild 控制台中,选择构建项目。
  2. 从右上角选择“编辑”下拉菜单,然后选择“环境”选项。
  3. 在“编辑环境”页面中,选择“覆盖图像”。之后,向下滚动找到“特权”选项并选择它。
  4. 选择“更新环境”以确保属性已更新。

答案2

如果使用 CDK,则必须docker_enabled_for_synth在 CodePipeline 中设置标志。此外,您可能需要进行手动部署(cdk deploy),因为管道的自我变异对我来说不起作用。

pipeline = pipelines.CodePipeline(
            scope=self,
            id="SomeCodePipeline",
            ...
            docker_enabled_for_self_mutation=True,
            docker_enabled_for_synth=True,  # enable docker builds
        )

相关内容