@@ -73,7 +73,7 @@ func runBuild(dockerCli command.Cli, application string, opt buildOptions) error
7373 return err
7474 }
7575
76- for k , t := range targets {
76+ for service , t := range targets {
7777 if strings .HasPrefix (* t .Context , "." ) {
7878 // Relative path in compose file under x.dockerapp refers to parent folder
7979 // FIXME docker app init should maybe udate them ?
@@ -82,8 +82,8 @@ func runBuild(dockerCli command.Cli, application string, opt buildOptions) error
8282 return err
8383 }
8484 t .Context = & path
85- t .Tags = []string {fmt .Sprintf ("%s:%s" , bundle .Name , bundle .Version )}
86- targets [k ] = t
85+ t .Tags = []string {fmt .Sprintf ("%s:%s-%s " , bundle .Name , bundle .Version , service )}
86+ targets [service ] = t
8787 }
8888 }
8989
@@ -117,28 +117,45 @@ func runBuild(dockerCli command.Cli, application string, opt buildOptions) error
117117 // FIXME add invocation image as another build target
118118
119119 pw := progress .NewPrinter (ctx2 , os .Stderr , opt .progress )
120- resp , err : = build .Build (ctx2 , driverInfo , buildopts , dockerAPI (dockerCli ), dockerCli .ConfigFile (), pw )
120+ _ , err = build .Build (ctx2 , driverInfo , buildopts , dockerAPI (dockerCli ), dockerCli .ConfigFile (), pw )
121121 if err != nil {
122122 return err
123123 }
124124
125125 fmt .Println ("Successfully built service images" )
126- for k , r := range resp {
126+
127+ /* FIXME Build should tell us everything we need to know about digests https://github.com/docker/buildx/issues/149
128+ for service, r := range resp {
127129 digest := r.ExporterResponse["containerimage.digest"]
128- image := bundle .Images [k ]
130+ image := bundle.Images[service ]
129131 image.ImageType = cnab.ImageTypeDocker
130- image .Digest = digest
131- bundle .Images [k ] = image
132- fmt .Printf (" - %s : %s\n " , k , image .Digest )
132+ image.Image = fmt.Sprintf("%s@%s", bundle.Name, digest)
133+ bundle.Images[service ] = image
134+ fmt.Printf(" - %s : %s\n", service , image.Digest)
133135 }
134-
135136 // -- debug
136137 dt, err = json.MarshalIndent(resp, "", " ")
137138 if err != nil {
138139 return err
139140 }
140141 fmt.Fprintln(dockerCli.Out(), string(dt))
141142 // -- debug
143+ */
144+ // FIXME as a workaround, inspect image we've just built to get digest
145+ for service , _ := range targets {
146+ ref := fmt .Sprintf ("%s:%s-%s" , bundle .Name , bundle .Version , service )
147+ inspect , _ , err := dockerCli .Client ().ImageInspectWithRaw (ctx , ref )
148+ if err != nil {
149+ return err
150+ }
151+ image := bundle .Images [service ]
152+ image .ImageType = cnab .ImageTypeDocker
153+ image .Image = fmt .Sprintf ("%s:%s-%s" , bundle .Name , bundle .Version , service )
154+ image .Digest = inspect .ID
155+ bundle .Images [service ] = image
156+ fmt .Printf (" - %s : %s:%s-%s (%s)\n " , service , bundle .Name , bundle .Version , service , inspect .ID )
157+ }
158+
142159
143160 if opt .tag == "" {
144161 opt .tag = bundle .Name + ":" + bundle .Version
0 commit comments