diff --git a/builder/dispatchers.go b/builder/dispatchers.go index 3cb3a9fb3a..4d21a75eb5 100644 --- a/builder/dispatchers.go +++ b/builder/dispatchers.go @@ -427,6 +427,10 @@ func volume(b *Builder, args []string, attributes map[string]bool, original stri b.Config.Volumes = map[string]struct{}{} } for _, v := range args { + v = strings.TrimSpace(v) + if v == "" { + return fmt.Errorf("Volume specified can not be an empty string") + } b.Config.Volumes[v] = struct{}{} } if err := b.commit("", b.Config.Cmd, fmt.Sprintf("VOLUME %v", args)); err != nil { diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index ebf989aaf5..e090b3f68f 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -5540,3 +5540,19 @@ func TestBuildResourceConstraintsAreUsed(t *testing.T) { logDone("build - resource constraints applied") } + +func TestBuildEmptyStringVolume(t *testing.T) { + name := "testbuildemptystringvolume" + defer deleteImages(name) + + _, err := buildImage(name, ` + FROM busybox + ENV foo="" + VOLUME $foo + `, false) + if err == nil { + t.Fatal("Should have failed to build") + } + + logDone("build - empty string volume") +}