1
0
Эх сурвалжийг харах

image can be set to a local ID, that isn't a valid docker ref

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 11 сар өмнө
parent
commit
fa39503469

+ 6 - 6
pkg/compose/images.go

@@ -94,12 +94,12 @@ func (s *composeService) getImageSummaries(ctx context.Context, repoTags []strin
 			tag := ""
 			tag := ""
 			repository := ""
 			repository := ""
 			ref, err := reference.ParseDockerRef(repoTag)
 			ref, err := reference.ParseDockerRef(repoTag)
-			if err != nil {
-				return err
-			}
-			repository = reference.FamiliarName(ref)
-			if tagged, ok := ref.(reference.Tagged); ok {
-				tag = tagged.Tag()
+			if err == nil {
+				// ParseDockerRef will reject a local image ID
+				repository = reference.FamiliarName(ref)
+				if tagged, ok := ref.(reference.Tagged); ok {
+					tag = tagged.Tag()
+				}
 			}
 			}
 			l.Lock()
 			l.Lock()
 			summary[repoTag] = api.ImageSummary{
 			summary[repoTag] = api.ImageSummary{

+ 3 - 0
pkg/e2e/fixtures/simple-composefile/id.yaml

@@ -0,0 +1,3 @@
+services:
+  test:
+    image: ${ID:?ID variable must be set}

+ 15 - 0
pkg/e2e/up_test.go

@@ -191,3 +191,18 @@ func TestUpProfile(t *testing.T) {
 	assert.Assert(t, strings.Contains(res.Combined(), `Container foo_c  Created`), res.Combined())
 	assert.Assert(t, strings.Contains(res.Combined(), `Container foo_c  Created`), res.Combined())
 	assert.Assert(t, !strings.Contains(res.Combined(), `Container bar_c  Created`), res.Combined())
 	assert.Assert(t, !strings.Contains(res.Combined(), `Container bar_c  Created`), res.Combined())
 }
 }
+
+func TestUpImageID(t *testing.T) {
+	c := NewCLI(t)
+	const projectName = "compose-e2e-up-image-id"
+
+	digest := strings.TrimSpace(c.RunDockerCmd(t, "image", "inspect", "alpine", "-f", "{{ .ID }}").Stdout())
+	_, id, _ := strings.Cut(digest, ":")
+
+	t.Cleanup(func() {
+		c.RunDockerComposeCmd(t, "--project-name", projectName, "down", "-v")
+	})
+
+	c = NewCLI(t, WithEnv(fmt.Sprintf("ID=%s", id)))
+	c.RunDockerComposeCmd(t, "-f", "./fixtures/simple-composefile/id.yaml", "--project-name", projectName, "up")
+}