使用AWS CDK创建CodeBuild项目来构建Docker镜像

6
我希望能够使用AWS CDK在源代码中定义一个CodeBuild项目。该CodeBuild项目需要能够构建并推送Docker镜像。
在AWS控制台中创建新的CodeBuild项目时,有一个选项:
“特权”:如果您想要构建Docker镜像或希望构建具有提升权限的构建,请启用此标志。

enter image description here

我没有看到任何等价的API来打开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镜像?
2个回答

10

就是这个!设置被隐藏在Environment属性中。https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-codebuild.BuildEnvironment.html#privileged - Philip Pittle

0

我怀疑之前接受的答案是针对 CDK 1.x 写的。对于 CDK 2.x,我发现默认的构建镜像确实提供了构建 Docker 镜像的支持。只需按如下方式明确设置构建镜像即可轻松解决此问题。

new Project(this, "coolBuildProject", {
      // ... setting up your codeBuildProject
      environment: {
        // this is the essential piece you're looking for
        privileged: true,
        // insert your preferred image below.
        buildImage: codebuild.LinuxBuildImage.fromCodeBuildImageId("aws/codebuild/standard:6.0"),
      },
    });


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接