使用 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