diff --git a/cmd/compose/compose.go b/cmd/compose/compose.go index 42b7b178d7b..bc3e173b7ac 100644 --- a/cmd/compose/compose.go +++ b/cmd/compose/compose.go @@ -132,6 +132,7 @@ type ProjectOptions struct { Compatibility bool Progress string Offline bool + All bool } // ProjectFunc does stuff within a types.Project @@ -175,6 +176,7 @@ func (o *ProjectOptions) addProjectFlags(f *pflag.FlagSet) { f.StringVar(&o.WorkDir, "workdir", "", "DEPRECATED! USE --project-directory INSTEAD.\nSpecify an alternate working directory\n(default: the path of the, first specified, Compose file)") f.BoolVar(&o.Compatibility, "compatibility", false, "Run compose in backward compatibility mode") f.StringVar(&o.Progress, "progress", string(buildkit.AutoMode), fmt.Sprintf(`Set type of progress output (%s)`, strings.Join(printerModes, ", "))) + f.BoolVar(&o.All, "all-resources", false, "Include all resources, even those not used by services") _ = f.MarkHidden("workdir") } @@ -300,7 +302,9 @@ func (o *ProjectOptions) ToProject(ctx context.Context, dockerCli command.Cli, s project.Services[name] = s } - project = project.WithoutUnnecessaryResources() + if !o.All { + project = project.WithoutUnnecessaryResources() + } project, err = project.WithSelectedServices(services) return project, metrics, err diff --git a/cmd/compose/up.go b/cmd/compose/up.go index 559387cbe4a..7fc0bcaf5ef 100644 --- a/cmd/compose/up.go +++ b/cmd/compose/up.go @@ -125,6 +125,10 @@ func upCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service, ex up.validateNavigationMenu(dockerCli, experiments) + if !p.All && len(project.Services) == 0 { + return fmt.Errorf("no service selected") + } + return runUp(ctx, dockerCli, backend, create, up, build, project, services) }), ValidArgsFunction: completeServiceNames(dockerCli, p), @@ -205,10 +209,6 @@ func runUp( project *types.Project, services []string, ) error { - if len(project.Services) == 0 { - return fmt.Errorf("no service selected") - } - err := createOptions.Apply(project) if err != nil { return err diff --git a/docs/reference/compose.md b/docs/reference/compose.md index ce6c214d0d6..09a4c69da9a 100644 --- a/docs/reference/compose.md +++ b/docs/reference/compose.md @@ -43,6 +43,7 @@ Define and run multi-container applications with Docker | Name | Type | Default | Description | |:-----------------------|:--------------|:--------|:----------------------------------------------------------------------------------------------------| +| `--all-resources` | | | Include all resources, even those not used by services | | `--ansi` | `string` | `auto` | Control when to print ANSI control characters ("never"\|"always"\|"auto") | | `--compatibility` | | | Run compose in backward compatibility mode | | `--dry-run` | | | Execute command in dry run mode | diff --git a/docs/reference/docker_compose.yaml b/docs/reference/docker_compose.yaml index acdd3912610..f725467df8d 100644 --- a/docs/reference/docker_compose.yaml +++ b/docs/reference/docker_compose.yaml @@ -208,6 +208,16 @@ clink: - docker_compose_wait.yaml - docker_compose_watch.yaml options: + - option: all-resources + value_type: bool + default_value: "false" + description: Include all resources, even those not used by services + deprecated: false + hidden: false + experimental: false + experimentalcli: false + kubernetes: false + swarm: false - option: ansi value_type: string default_value: auto