使用 AWS CDK 创建用于构建 Docker 映像的 CodeBuild 项目

Posted

技术标签:

【中文标题】使用 AWS CDK 创建用于构建 Docker 映像的 CodeBuild 项目【英文标题】:Use AWS CDK to create CodeBuild Project for building Docker Images 【发布时间】:2021-02-06 02:50:40 【问题描述】:

我想使用 AWS CDK 在源代码中定义 CodeBuild 项目。 CodeBuild 项目需要能够构建然后推送 docker 镜像。

在 AWS 控制台中创建新的 CodeBuild 项目时,有一个选项:

Privileged 如果您想构建 Docker 映像或希望您的构建获得提升的权限,请启用此标志。

我没有在API Docs 中看到用于打开 Privileged 标志的等效 api。

var codeBuildProject = new Project(this, "Example_Build", new ProjectProps

    ProjectName = "ExampleBuildFromCDK",
    // How to add Privileged?
    BuildSpec = BuildSpec.FromSourceFilename("example/buildspec.yml"),
    Source = Source.CodeCommit(new CodeCommitSourceProps
    
        Repository = Repository.FromRepositoryArn(this, "CodeCommit", CodeRepositoryArn),
        BranchOrRef = "refs/heads/example/added-docker-images"
    )
);

如果我尝试在不将 Privileged 设置为 true 的情况下运行我的构建,我会得到标准错误:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

如何使用 AWS CDK 创建具有“特权”的 CodeBuild 项目来构建 Docker 映像?

【问题讨论】:

【参考方案1】:
    new Project(this, "coolBuildProject", 
      // ... setting up your codeBuildProject
      environment: 
        // this is the essential piece you're looking for
        privileged: true,
      ,
    );

一般来说,您可以在此处找到所有其他(构建)环境设置: https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-codebuild.BuildEnvironment.html#privileged

【讨论】:

就是这个!设置隐藏在Environment 属性docs.aws.amazon.com/cdk/api/latest/docs/…

以上是关于使用 AWS CDK 创建用于构建 Docker 映像的 CodeBuild 项目的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS CDK 在 AWS Codepipeline 中部署 Python Lambda 函数

是否有用于导入整个 DNS 区域传输的 CDK 或 CloudFormation 构造?

如何使用 AWS CDK Pipelines 构建不同语言的 lambda

使用 AWS CDK 为 AWS API 网关启用 CORS

AWS CDK:有没有办法使用 CDK 创建数据库模式?

AWS CDK - 多个堆栈 - 找不到 Lambda 代码位置的参数