|
@@ -3155,6 +3155,36 @@ func TestBuildDockerignoringDockerfile(t *testing.T) {
|
|
|
logDone("build - test .dockerignore of Dockerfile")
|
|
|
}
|
|
|
|
|
|
+func TestBuildDockerignoringRenamedDockerfile(t *testing.T) {
|
|
|
+ name := "testbuilddockerignoredockerfile"
|
|
|
+ defer deleteImages(name)
|
|
|
+ dockerfile := `
|
|
|
+ FROM busybox
|
|
|
+ ADD . /tmp/
|
|
|
+ RUN ls /tmp/Dockerfile
|
|
|
+ RUN ! ls /tmp/MyDockerfile
|
|
|
+ RUN ls /tmp/.dockerignore`
|
|
|
+ ctx, err := fakeContext(dockerfile, map[string]string{
|
|
|
+ "Dockerfile": "Should not use me",
|
|
|
+ "MyDockerfile": dockerfile,
|
|
|
+ ".dockerignore": "MyDockerfile\n",
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ if _, err = buildImageFromContext(name, ctx, true); err != nil {
|
|
|
+ t.Fatalf("Didn't ignore MyDockerfile correctly:%s", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // now try it with ./MyDockerfile
|
|
|
+ ctx.Add(".dockerignore", "./MyDockerfile\n")
|
|
|
+ if _, err = buildImageFromContext(name, ctx, true); err != nil {
|
|
|
+ t.Fatalf("Didn't ignore ./MyDockerfile correctly:%s", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ logDone("build - test .dockerignore of renamed Dockerfile")
|
|
|
+}
|
|
|
+
|
|
|
func TestBuildDockerignoringDockerignore(t *testing.T) {
|
|
|
name := "testbuilddockerignoredockerignore"
|
|
|
defer deleteImages(name)
|
|
@@ -4170,3 +4200,104 @@ CMD cat /foo/file`,
|
|
|
|
|
|
logDone("build - volumes retain contents in build")
|
|
|
}
|
|
|
+
|
|
|
+func TestBuildRenamedDockerfile(t *testing.T) {
|
|
|
+ defer deleteAllContainers()
|
|
|
+
|
|
|
+ ctx, err := fakeContext(`FROM busybox
|
|
|
+ RUN echo from Dockerfile`,
|
|
|
+ map[string]string{
|
|
|
+ "Dockerfile": "FROM busybox\nRUN echo from Dockerfile",
|
|
|
+ "files/Dockerfile": "FROM busybox\nRUN echo from files/Dockerfile",
|
|
|
+ "files/dFile": "FROM busybox\nRUN echo from files/dFile",
|
|
|
+ "dFile": "FROM busybox\nRUN echo from dFile",
|
|
|
+ })
|
|
|
+ defer ctx.Close()
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ out, _, err := dockerCmdInDir(t, ctx.Dir, "build", "-t", "test1", ".")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("Failed to build: %s\n%s", out, err)
|
|
|
+ }
|
|
|
+ if !strings.Contains(out, "from Dockerfile") {
|
|
|
+ t.Fatalf("Should have used Dockerfile, output:%s", out)
|
|
|
+ }
|
|
|
+
|
|
|
+ out, _, err = dockerCmdInDir(t, ctx.Dir, "build", "-f", "files/Dockerfile", "-t", "test2", ".")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ if !strings.Contains(out, "from files/Dockerfile") {
|
|
|
+ t.Fatalf("Should have used files/Dockerfile, output:%s", out)
|
|
|
+ }
|
|
|
+
|
|
|
+ out, _, err = dockerCmdInDir(t, ctx.Dir, "build", "--file=files/dFile", "-t", "test3", ".")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ if !strings.Contains(out, "from files/dFile") {
|
|
|
+ t.Fatalf("Should have used files/dFile, output:%s", out)
|
|
|
+ }
|
|
|
+
|
|
|
+ out, _, err = dockerCmdInDir(t, ctx.Dir, "build", "--file=dFile", "-t", "test4", ".")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ if !strings.Contains(out, "from dFile") {
|
|
|
+ t.Fatalf("Should have used dFile, output:%s", out)
|
|
|
+ }
|
|
|
+
|
|
|
+ out, _, err = dockerCmdInDir(t, ctx.Dir, "build", "--file=/etc/passwd", "-t", "test5", ".")
|
|
|
+
|
|
|
+ if err == nil {
|
|
|
+ t.Fatalf("Was supposed to fail to find passwd")
|
|
|
+ }
|
|
|
+
|
|
|
+ if !strings.Contains(out, "The Dockerfile (/etc/passwd) must be within the build context (.)") {
|
|
|
+ t.Fatalf("Wrong error message for passwd:%v", out)
|
|
|
+ }
|
|
|
+
|
|
|
+ out, _, err = dockerCmdInDir(t, ctx.Dir+"/files", "build", "-f", "../Dockerfile", "-t", "test5", "..")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if !strings.Contains(out, "from Dockerfile") {
|
|
|
+ t.Fatalf("Should have used root Dockerfile, output:%s", out)
|
|
|
+ }
|
|
|
+
|
|
|
+ out, _, err = dockerCmdInDir(t, ctx.Dir+"/files", "build", "-f", ctx.Dir+"/files/Dockerfile", "-t", "test6", "..")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if !strings.Contains(out, "from files/Dockerfile") {
|
|
|
+ t.Fatalf("Should have used files Dockerfile - 2, output:%s", out)
|
|
|
+ }
|
|
|
+
|
|
|
+ out, _, err = dockerCmdInDir(t, ctx.Dir+"/files", "build", "-f", "../Dockerfile", "-t", "test7", ".")
|
|
|
+
|
|
|
+ if err == nil || !strings.Contains(out, "must be within the build context") {
|
|
|
+ t.Fatalf("Should have failed with Dockerfile out of context")
|
|
|
+ }
|
|
|
+
|
|
|
+ out, _, err = dockerCmdInDir(t, "/tmp", "build", "-t", "test6", ctx.Dir)
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if !strings.Contains(out, "from Dockerfile") {
|
|
|
+ t.Fatalf("Should have used root Dockerfile, output:%s", out)
|
|
|
+ }
|
|
|
+
|
|
|
+ logDone("build - rename dockerfile")
|
|
|
+}
|