mirror of https://github.com/docker/docs.git
Merge pull request #8739 from duglin/CleanupDockerIgnores
Do some cleanup on .dockerignore paths
This commit is contained in:
commit
a85f58719f
|
@ -144,6 +144,11 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
|
||||||
return fmt.Errorf("Error reading .dockerignore: '%s'", err)
|
return fmt.Errorf("Error reading .dockerignore: '%s'", err)
|
||||||
}
|
}
|
||||||
for _, pattern := range strings.Split(string(ignore), "\n") {
|
for _, pattern := range strings.Split(string(ignore), "\n") {
|
||||||
|
pattern = strings.TrimSpace(pattern)
|
||||||
|
if pattern == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
pattern = filepath.Clean(pattern)
|
||||||
ok, err := filepath.Match(pattern, "Dockerfile")
|
ok, err := filepath.Match(pattern, "Dockerfile")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Bad .dockerignore pattern: '%s', error: %s", pattern, err)
|
return fmt.Errorf("Bad .dockerignore pattern: '%s', error: %s", pattern, err)
|
||||||
|
|
|
@ -2669,6 +2669,29 @@ func TestBuildDockerignore(t *testing.T) {
|
||||||
logDone("build - test .dockerignore")
|
logDone("build - test .dockerignore")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBuildDockerignoreCleanPaths(t *testing.T) {
|
||||||
|
name := "testbuilddockerignorecleanpaths"
|
||||||
|
defer deleteImages(name)
|
||||||
|
dockerfile := `
|
||||||
|
FROM busybox
|
||||||
|
ADD . /tmp/
|
||||||
|
RUN (! ls /tmp/foo) && (! ls /tmp/foo2) && (! ls /tmp/dir1/foo)`
|
||||||
|
ctx, err := fakeContext(dockerfile, map[string]string{
|
||||||
|
"foo": "foo",
|
||||||
|
"foo2": "foo2",
|
||||||
|
"dir1/foo": "foo in dir1",
|
||||||
|
".dockerignore": "./foo\ndir1//foo\n./dir1/../foo2",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer ctx.Close()
|
||||||
|
if _, err := buildImageFromContext(name, ctx, true); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
logDone("build - test .dockerignore with clean paths")
|
||||||
|
}
|
||||||
|
|
||||||
func TestBuildDockerignoringDockerfile(t *testing.T) {
|
func TestBuildDockerignoringDockerfile(t *testing.T) {
|
||||||
name := "testbuilddockerignoredockerfile"
|
name := "testbuilddockerignoredockerfile"
|
||||||
defer deleteImages(name)
|
defer deleteImages(name)
|
||||||
|
@ -2678,13 +2701,20 @@ func TestBuildDockerignoringDockerfile(t *testing.T) {
|
||||||
"Dockerfile": "FROM scratch",
|
"Dockerfile": "FROM scratch",
|
||||||
".dockerignore": "Dockerfile\n",
|
".dockerignore": "Dockerfile\n",
|
||||||
})
|
})
|
||||||
defer ctx.Close()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
defer ctx.Close()
|
||||||
if _, err = buildImageFromContext(name, ctx, true); err == nil {
|
if _, err = buildImageFromContext(name, ctx, true); err == nil {
|
||||||
t.Fatalf("Didn't get expected error from ignoring Dockerfile")
|
t.Fatalf("Didn't get expected error from ignoring Dockerfile")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// now try it with ./Dockerfile
|
||||||
|
ctx.Add(".dockerignore", "./Dockerfile\n")
|
||||||
|
if _, err = buildImageFromContext(name, ctx, true); err == nil {
|
||||||
|
t.Fatalf("Didn't get expected error from ignoring ./Dockerfile")
|
||||||
|
}
|
||||||
|
|
||||||
logDone("build - test .dockerignore of Dockerfile")
|
logDone("build - test .dockerignore of Dockerfile")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue