Ver código fonte

Skip whole dir dockerignoring with warning

Fixes #7093
Docker-DCO-1.1-Signed-off-by: Alexandr Morozov <lk4d4math@gmail.com> (github: LK4D4)
Alexandr Morozov 11 anos atrás
pai
commit
7d97a5f476
2 arquivos alterados com 27 adições e 0 exclusões
  1. 4 0
      archive/archive.go
  2. 23 0
      integration-cli/docker_cli_build_test.go

+ 4 - 0
archive/archive.go

@@ -347,6 +347,10 @@ func TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error)
 						return err
 					}
 					if matched {
+						if filepath.Clean(relFilePath) == "." {
+							utils.Errorf("Can't exclude whole path, excluding pattern: %s", exclude)
+							continue
+						}
 						utils.Debugf("Skipping excluded path: %s", relFilePath)
 						if f.IsDir() {
 							return filepath.SkipDir

+ 23 - 0
integration-cli/docker_cli_build_test.go

@@ -1565,6 +1565,29 @@ func TestDockerignoringDockerfile(t *testing.T) {
 	logDone("build - test .dockerignore of Dockerfile")
 }
 
+func TestDockerignoringWholeDir(t *testing.T) {
+	name := "testbuilddockerignorewholedir"
+	defer deleteImages(name)
+	dockerfile := `
+        FROM busybox
+		COPY . /
+		RUN [[ ! -e /.gitignore ]]
+		RUN [[ -f /Makefile ]]`
+	ctx, err := fakeContext(dockerfile, map[string]string{
+		"Dockerfile":    "FROM scratch",
+		"Makefile":      "all:",
+		".dockerignore": ".*\n",
+	})
+	defer ctx.Close()
+	if err != nil {
+		t.Fatal(err)
+	}
+	if _, err = buildImageFromContext(name, ctx, true); err != nil {
+		t.Fatal(err)
+	}
+	logDone("build - test .dockerignore whole dir with .*")
+}
+
 func TestBuildLineBreak(t *testing.T) {
 	name := "testbuildlinebreak"
 	defer deleteImages(name)