diff --git a/cmd/compose/create.go b/cmd/compose/create.go index 7ce8a1853..717c28b31 100644 --- a/cmd/compose/create.go +++ b/cmd/compose/create.go @@ -30,6 +30,7 @@ import ( type createOptions struct { Build bool noBuild bool + Pull string removeOrphans bool ignoreOrphans bool forceRecreate bool @@ -56,6 +57,7 @@ func createCommand(p *projectOptions, backend api.Service) *cobra.Command { return nil }), RunE: p.WithProject(func(ctx context.Context, project *types.Project) error { + opts.Apply(project) return backend.Create(ctx, project, api.CreateOptions{ RemoveOrphans: opts.removeOrphans, IgnoreOrphans: opts.ignoreOrphans, @@ -71,6 +73,7 @@ func createCommand(p *projectOptions, backend api.Service) *cobra.Command { flags := cmd.Flags() flags.BoolVar(&opts.Build, "build", false, "Build images before starting containers.") flags.BoolVar(&opts.noBuild, "no-build", false, "Don't build an image, even if it's missing.") + flags.StringVar(&opts.Pull, "pull", "missing", `Pull image before running ("always"|"missing"|"never")`) flags.BoolVar(&opts.forceRecreate, "force-recreate", false, "Recreate containers even if their configuration and image haven't changed.") flags.BoolVar(&opts.noRecreate, "no-recreate", false, "If containers already exist, don't recreate them. Incompatible with --force-recreate.") return cmd @@ -105,6 +108,12 @@ func (opts createOptions) GetTimeout() *time.Duration { } func (opts createOptions) Apply(project *types.Project) { + if opts.Pull != "" { + for i, service := range project.Services { + service.PullPolicy = opts.Pull + project.Services[i] = service + } + } if opts.Build { for i, service := range project.Services { if service.Build == nil { diff --git a/cmd/compose/up.go b/cmd/compose/up.go index 145bb7cea..1cdbff924 100644 --- a/cmd/compose/up.go +++ b/cmd/compose/up.go @@ -115,6 +115,7 @@ func upCommand(p *projectOptions, backend api.Service) *cobra.Command { flags.BoolVarP(&up.Detach, "detach", "d", false, "Detached mode: Run containers in the background") flags.BoolVar(&create.Build, "build", false, "Build images before starting containers.") flags.BoolVar(&create.noBuild, "no-build", false, "Don't build an image, even if it's missing.") + flags.StringVar(&create.Pull, "pull", "missing", `Pull image before running ("always"|"missing"|"never")`) flags.BoolVar(&create.removeOrphans, "remove-orphans", false, "Remove containers for services not defined in the Compose file.") flags.StringArrayVar(&up.scale, "scale", []string{}, "Scale SERVICE to NUM instances. Overrides the `scale` setting in the Compose file if present.") flags.BoolVar(&up.noColor, "no-color", false, "Produce monochrome output.") diff --git a/docs/reference/compose_create.md b/docs/reference/compose_create.md index 00123ba78..843d4235b 100644 --- a/docs/reference/compose_create.md +++ b/docs/reference/compose_create.md @@ -11,6 +11,7 @@ Creates containers for a service. | `--force-recreate` | | | Recreate containers even if their configuration and image haven't changed. | | `--no-build` | | | Don't build an image, even if it's missing. | | `--no-recreate` | | | If containers already exist, don't recreate them. Incompatible with --force-recreate. | +| `--pull` | `string` | `missing` | Pull image before running ("always"\|"missing"\|"never") | diff --git a/docs/reference/compose_up.md b/docs/reference/compose_up.md index 1a110f3f9..2a883c530 100644 --- a/docs/reference/compose_up.md +++ b/docs/reference/compose_up.md @@ -21,6 +21,7 @@ Create and start containers | `--no-log-prefix` | | | Don't print prefix in logs. | | `--no-recreate` | | | If containers already exist, don't recreate them. Incompatible with --force-recreate. | | `--no-start` | | | Don't start the services after creating them. | +| `--pull` | `string` | `missing` | Pull image before running ("always"\|"missing"\|"never") | | `--quiet-pull` | | | Pull without printing progress information. | | `--remove-orphans` | | | Remove containers for services not defined in the Compose file. | | `-V`, `--renew-anon-volumes` | | | Recreate anonymous volumes instead of retrieving data from the previous containers. | diff --git a/docs/reference/docker_compose_create.yaml b/docs/reference/docker_compose_create.yaml index 35d76a3d6..176e695c1 100644 --- a/docs/reference/docker_compose_create.yaml +++ b/docs/reference/docker_compose_create.yaml @@ -47,6 +47,16 @@ options: experimentalcli: false kubernetes: false swarm: false + - option: pull + value_type: string + default_value: missing + description: Pull image before running ("always"|"missing"|"never") + deprecated: false + hidden: false + experimental: false + experimentalcli: false + kubernetes: false + swarm: false deprecated: false experimental: false experimentalcli: false diff --git a/docs/reference/docker_compose_up.yaml b/docs/reference/docker_compose_up.yaml index ef41c951f..9ab0681ef 100644 --- a/docs/reference/docker_compose_up.yaml +++ b/docs/reference/docker_compose_up.yaml @@ -165,6 +165,16 @@ options: experimentalcli: false kubernetes: false swarm: false + - option: pull + value_type: string + default_value: missing + description: Pull image before running ("always"|"missing"|"never") + deprecated: false + hidden: false + experimental: false + experimentalcli: false + kubernetes: false + swarm: false - option: quiet-pull value_type: bool default_value: "false"