From 9976077e24fa9eb952e54d31b8738f8839bc8686 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Tue, 17 May 2022 16:19:40 +0200 Subject: [PATCH 1/2] introduce --pull Signed-off-by: Nicolas De Loof --- cmd/compose/create.go | 8 ++++++++ cmd/compose/up.go | 1 + 2 files changed, 9 insertions(+) diff --git a/cmd/compose/create.go b/cmd/compose/create.go index 7ce8a1853..f697f91f4 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 @@ -71,6 +72,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 +107,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.") From e83d940a3c9eaa064a91e1a7dc3b276bd8d3c548 Mon Sep 17 00:00:00 2001 From: Guillaume Lours Date: Wed, 27 Jul 2022 11:25:53 +0200 Subject: [PATCH 2/2] add pull & build config to project before create add pull flag to create and up documentation Signed-off-by: Guillaume Lours --- cmd/compose/create.go | 1 + docs/reference/compose_create.md | 1 + docs/reference/compose_up.md | 1 + docs/reference/docker_compose_create.yaml | 10 ++++++++++ docs/reference/docker_compose_up.yaml | 10 ++++++++++ 5 files changed, 23 insertions(+) diff --git a/cmd/compose/create.go b/cmd/compose/create.go index f697f91f4..717c28b31 100644 --- a/cmd/compose/create.go +++ b/cmd/compose/create.go @@ -57,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, 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"