Question:
I want to define a CodeBuild project in source code using the AWS CDK. The CodeBuild project needs to be able to build and then push docker images.
When creating a new CodeBuild Project in the AWS Console there’s an option:
Privileged Enable this flag if you want to build Docker images or want your builds to get elevated privileges.
I don’t see an equivalent api for turning on the Privileged flag in the API Docs.
1 2 3 4 5 6 7 8 9 10 11 12 |
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" }) }); |
And if I try to run my build without setting Privileged to true, I’ll get the standard error:
1 2 |
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? |
How to I use the AWS CDK to create a CodeBuild Project that has “Privileged” to build Docker images?
Answer:
1 2 3 4 5 6 7 8 |
new Project(this, "coolBuildProject", { // ... setting up your codeBuildProject environment: { // this is the essential piece you're looking for privileged: true, }, }); |
In general, you can find all other (build) environment settings here:
https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-codebuild.BuildEnvironment.html#privileged