1+ locals {
2+ context_path = " ${ path . root } /../../../${ var . build_context != " ." ? var . build_context : " " } "
3+ original_command = join (" " , compact ([data . external . inspect_base_image . result . entrypoint , data . external . inspect_base_image . result . cmd ]))
4+ image_id = var. image_id == null ? docker_image. base_service . image_id : var. image_id
5+ build_trigger = var. image_id == null ? sha1 (join (" " , [for f in fileset (local. context_path , " **" ) : filesha1 (" ${ local . context_path } /${ f } " )])) : var. image_id
6+ }
7+
18resource "docker_image" "base_service" {
29 name = var. image_id == null ? " ${ var . tag } _base_service" : var. image_id
310
@@ -7,12 +14,16 @@ resource "docker_image" "base_service" {
714 builder = " default"
815 platform = var. platform
916 # NOTE: This assumes the terraform output is three dirs down from the root of the project
10- context = " ${ path . root } /../../../ ${ var . build_context != " . " ? var . build_context : " " } "
11- dockerfile = " ${ path . root } /../../.. /${ var . dockerfile } "
17+ context = local . context_path
18+ dockerfile = " ${ local . context_path } /${ var . dockerfile } "
1219 tag = [" ${ var . tag } :base" ]
1320 build_args = var. args
1421 }
1522 }
23+
24+ triggers = {
25+ build_trigger = local.build_trigger
26+ }
1627}
1728
1829# Extract entrypoint and command using Docker CLI via external data source
@@ -21,11 +32,6 @@ data "external" "inspect_base_image" {
2132 program = [" docker" , " inspect" , docker_image . base_service . image_id , " --format" , " {\" entrypoint\" :\" {{join .Config.Entrypoint \" \" }}\" ,\" cmd\" :\" {{join .Config.Cmd \" \" }}\" }" ]
2233}
2334
24- locals {
25- original_command = join (" " , compact ([data . external . inspect_base_image . result . entrypoint , data . external . inspect_base_image . result . cmd ]))
26- image_id = var. image_id == null ? docker_image. base_service . name : var. image_id
27- }
28-
2935# Next we want to wrap this image withing a suga service
3036resource "docker_image" "service" {
3137 name = var. tag
@@ -42,4 +48,8 @@ resource "docker_image" "service" {
4248 }, var. args )
4349 tag = [" ${ var . tag } :latest" ]
4450 }
51+
52+ triggers = {
53+ base_image_id = local.image_id
54+ }
4555}
0 commit comments