diff --git a/cmd/compose/build.go b/cmd/compose/build.go index aefe3d0fd..dfe15f5bb 100644 --- a/cmd/compose/build.go +++ b/cmd/compose/build.go @@ -94,5 +94,6 @@ func runBuild(ctx context.Context, backend api.Service, opts buildOptions, servi Args: types.NewMappingWithEquals(opts.args), NoCache: opts.noCache, Quiet: opts.quiet, + Services: services, }) } diff --git a/pkg/api/api.go b/pkg/api/api.go index 9ad5959f4..081934388 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -90,6 +90,8 @@ type BuildOptions struct { NoCache bool // Quiet make the build process not output to the console Quiet bool + // Services passed in the command line to be built + Services []string } // CreateOptions group options of the Create API diff --git a/pkg/compose/build.go b/pkg/compose/build.go index dba0dab8b..2fcb4d062 100644 --- a/pkg/compose/build.go +++ b/pkg/compose/build.go @@ -53,7 +53,12 @@ func (s *composeService) build(ctx context.Context, project *types.Project, opti return s, ok })) - for _, service := range project.Services { + services, err := project.GetServices(options.Services...) + if err != nil { + return err + } + + for _, service := range services { if service.Build != nil { imageName := getImageName(service, project.Name) imagesToBuild = append(imagesToBuild, imageName) @@ -79,7 +84,7 @@ func (s *composeService) build(ctx context.Context, project *types.Project, opti } } - _, err := s.doBuild(ctx, project, opts, options.Progress) + _, err = s.doBuild(ctx, project, opts, options.Progress) if err == nil { if len(imagesToBuild) > 0 && !options.Quiet { utils.DisplayScanSuggestMsg()