diff --git a/buildfile.go b/buildfile.go index a2b6da7347..fc8bfed5d3 100644 --- a/buildfile.go +++ b/buildfile.go @@ -136,7 +136,7 @@ func (b *buildFile) CmdRun(args string) error { if b.image == "" { return fmt.Errorf("Please provide a source image with `from` prior to run") } - config, _, _, err := ParseRun([]string{b.image, "/bin/sh", "-c", args}, nil) + config, _, _, err := ParseRun(append([]string{b.image}, b.buildCmdFromJson(args)...), nil) if err != nil { return err } diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index 6c1acc0088..16a51e575d 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -223,6 +223,31 @@ run [ "$(cat /bar/withfile)" = "test2" ] }, nil, }, + + // JSON! + { + ` +FROM {IMAGE} +RUN ["/bin/echo","hello","world"] +CMD ["/bin/true"] +ENTRYPOINT ["/bin/echo","your command -->"] +`, + nil, + nil, + }, + { + ` +FROM {IMAGE} +ADD test /test +RUN ["chmod","+x","/test"] +RUN ["/test"] +RUN [ "$(cat /testfile)" = 'test!' ] +`, + [][2]string{ + {"test", "#!/bin/sh\necho 'test!' > /testfile"}, + }, + nil, + }, } // FIXME: test building with 2 successive overlapping ADD commands