File tree Expand file tree Collapse file tree 9 files changed +57
-5
lines changed Expand file tree Collapse file tree 9 files changed +57
-5
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ Note that this example may create resources which cost money. Run `terraform des
3737| ------| --------| ---------|
3838| <a name =" module_docker_build " ></a > [ docker\_ build] ( #module\_ docker\_ build ) | ../../modules/docker-build | n/a |
3939| <a name =" module_docker_build_from_ecr " ></a > [ docker\_ build\_ from\_ ecr] ( #module\_ docker\_ build\_ from\_ ecr ) | ../../modules/docker-build | n/a |
40+ | <a name =" module_docker_build_multistage " ></a > [ docker\_ build\_ multistage] ( #module\_ docker\_ build\_ multistage ) | ../../modules/docker-build | n/a |
4041| <a name =" module_ecr " ></a > [ ecr] ( #module\_ ecr ) | terraform-aws-modules/ecr/aws | n/a |
4142| <a name =" module_lambda_function_with_docker_build " ></a > [ lambda\_ function\_ with\_ docker\_ build] ( #module\_ lambda\_ function\_ with\_ docker\_ build ) | ../../ | n/a |
4243| <a name =" module_lambda_function_with_docker_build_from_ecr " ></a > [ lambda\_ function\_ with\_ docker\_ build\_ from\_ ecr] ( #module\_ lambda\_ function\_ with\_ docker\_ build\_ from\_ ecr ) | ../../ | n/a |
Original file line number Diff line number Diff line change 11# `--platform` argument is used to be able to build docker images when using another platform (e.g. Apple M1)
2- FROM --platform=linux/x86_64 scratch
2+ FROM --platform=linux/x86_64 scratch AS first_stage
33
44ARG FOO
55
66ENV FOO $FOO
77
88COPY empty /empty
9+
10+ FROM first_stage AS second_stage
11+
12+ COPY empty /empty_two
Original file line number Diff line number Diff line change @@ -123,6 +123,35 @@ module "docker_build_from_ecr" {
123123 build_args = {
124124 FOO = " bar"
125125 }
126+ # Can also use buildx
127+ builder = " default"
128+ docker_file_path = " ${ local . source_path } /Dockerfile"
129+
130+ triggers = {
131+ dir_sha = local.dir_sha
132+ }
133+
134+ cache_from = [" ${ module . ecr . repository_url } :latest" ]
135+ }
136+
137+ module "docker_build_multistage" {
138+ source = " ../../modules/docker-build"
139+
140+ ecr_repo = module. ecr . repository_name
141+
142+ use_image_tag = true
143+ image_tag = " first_stage"
144+
145+ source_path = local. source_path
146+ platform = " linux/amd64"
147+ build_args = {
148+ FOO = " bar"
149+ }
150+ builder = " default"
151+ docker_file_path = " ${ local . source_path } /Dockerfile"
152+
153+ # multi-stage builds
154+ build_target = " first_stage"
126155
127156 triggers = {
128157 dir_sha = local.dir_sha
Original file line number Diff line number Diff line change @@ -59,15 +59,15 @@ module "docker_image" {
5959| ------| ---------|
6060| <a name =" requirement_terraform " ></a > [ terraform] ( #requirement\_ terraform ) | >= 1.0 |
6161| <a name =" requirement_aws " ></a > [ aws] ( #requirement\_ aws ) | >= 4.22 |
62- | <a name =" requirement_docker " ></a > [ docker] ( #requirement\_ docker ) | >= 3.0 |
62+ | <a name =" requirement_docker " ></a > [ docker] ( #requirement\_ docker ) | >= 3.5. 0 |
6363| <a name =" requirement_null " ></a > [ null] ( #requirement\_ null ) | >= 2.0 |
6464
6565## Providers
6666
6767| Name | Version |
6868| ------| ---------|
6969| <a name =" provider_aws " ></a > [ aws] ( #provider\_ aws ) | >= 4.22 |
70- | <a name =" provider_docker " ></a > [ docker] ( #provider\_ docker ) | >= 3.0 |
70+ | <a name =" provider_docker " ></a > [ docker] ( #provider\_ docker ) | >= 3.5. 0 |
7171| <a name =" provider_null " ></a > [ null] ( #provider\_ null ) | >= 2.0 |
7272
7373## Modules
@@ -91,6 +91,8 @@ No modules.
9191| Name | Description | Type | Default | Required |
9292| ------| -------------| ------| ---------| :--------:|
9393| <a name =" input_build_args " ></a > [ build\_ args] ( #input\_ build\_ args ) | A map of Docker build arguments. | ` map(string) ` | ` {} ` | no |
94+ | <a name =" input_build_target " ></a > [ build\_ target] ( #input\_ build\_ target ) | Set the target build stage to build | ` string ` | ` null ` | no |
95+ | <a name =" input_builder " ></a > [ builder] ( #input\_ builder ) | The buildx builder to use for the Docker build. | ` string ` | ` null ` | no |
9496| <a name =" input_cache_from " ></a > [ cache\_ from] ( #input\_ cache\_ from ) | List of images to consider as cache sources when building the image. | ` list(string) ` | ` [] ` | no |
9597| <a name =" input_create_ecr_repo " ></a > [ create\_ ecr\_ repo] ( #input\_ create\_ ecr\_ repo ) | Controls whether ECR repository for Lambda image should be created | ` bool ` | ` false ` | no |
9698| <a name =" input_create_sam_metadata " ></a > [ create\_ sam\_ metadata] ( #input\_ create\_ sam\_ metadata ) | Controls whether the SAM metadata null resource should be created | ` bool ` | ` false ` | no |
Original file line number Diff line number Diff line change @@ -16,6 +16,8 @@ resource "docker_image" "this" {
1616 context = var. source_path
1717 dockerfile = var. docker_file_path
1818 build_args = var. build_args
19+ builder = var. builder
20+ target = var. build_target
1921 platform = var. platform
2022 cache_from = var. cache_from
2123 }
Original file line number Diff line number Diff line change @@ -71,12 +71,24 @@ variable "ecr_repo_tags" {
7171 default = {}
7272}
7373
74+ variable "builder" {
75+ description = " The buildx builder to use for the Docker build."
76+ type = string
77+ default = null
78+ }
79+
7480variable "build_args" {
7581 description = " A map of Docker build arguments."
7682 type = map (string )
7783 default = {}
7884}
7985
86+ variable "build_target" {
87+ description = " Set the target build stage to build"
88+ type = string
89+ default = null
90+ }
91+
8092variable "ecr_repo_lifecycle_policy" {
8193 description = " A JSON formatted ECR lifecycle policy to automate the cleaning up of unused images."
8294 type = string
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ terraform {
88 }
99 docker = {
1010 source = " kreuzwerker/docker"
11- version = " >= 3.0"
11+ version = " >= 3.5. 0"
1212 }
1313 null = {
1414 source = " hashicorp/null"
Original file line number Diff line number Diff line change @@ -4,6 +4,8 @@ module "wrapper" {
44 for_each = var. items
55
66 build_args = try (each. value . build_args , var. defaults . build_args , {})
7+ build_target = try (each. value . build_target , var. defaults . build_target , null )
8+ builder = try (each. value . builder , var. defaults . builder , null )
79 cache_from = try (each. value . cache_from , var. defaults . cache_from , [])
810 create_ecr_repo = try (each. value . create_ecr_repo , var. defaults . create_ecr_repo , false )
911 create_sam_metadata = try (each. value . create_sam_metadata , var. defaults . create_sam_metadata , false )
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ terraform {
88 }
99 docker = {
1010 source = " kreuzwerker/docker"
11- version = " >= 3.0"
11+ version = " >= 3.5. 0"
1212 }
1313 null = {
1414 source = " hashicorp/null"
You can’t perform that action at this time.
0 commit comments