소스 검색

Merge pull request #7097 from LK4D4/fix_eof_dockerignore_#7093

Skip whole dir dockerignoring with warning
unclejack 11 년 전
부모
커밋
7978b32127
2개의 변경된 파일27개의 추가작업 그리고 0개의 파일을 삭제
  1. 4 0
      archive/archive.go
  2. 23 0
      integration-cli/docker_cli_build_test.go

+ 4 - 0
archive/archive.go

@@ -356,6 +356,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

@@ -1577,6 +1577,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)