From 319988336ceed4428de0e1e55685f8a0ed48a7bd Mon Sep 17 00:00:00 2001 From: Marco Hennings Date: Sun, 18 Aug 2013 20:30:19 +0200 Subject: [PATCH] Add workdir support for the Buildfile For consistency the Buildfile should have the option to set the working directory. Of course that is one option more to the buildfile, so please tell me if we really want this to happen. --- buildfile.go | 5 +++++ docs/sources/use/builder.rst | 8 ++++++++ utils.go | 3 +++ 3 files changed, 16 insertions(+) diff --git a/buildfile.go b/buildfile.go index 5a2662646e..0666ba4388 100644 --- a/buildfile.go +++ b/buildfile.go @@ -222,6 +222,11 @@ func (b *buildFile) CmdEntrypoint(args string) error { return nil } +func (b *buildFile) CmdWorkdir(workdir string) error { + b.config.WorkingDir = workdir + return b.commit("", b.config.Cmd, fmt.Sprintf("WORKDIR %v", workdir)) +} + func (b *buildFile) CmdVolume(args string) error { if args == "" { return fmt.Errorf("Volume cannot be empty") diff --git a/docs/sources/use/builder.rst b/docs/sources/use/builder.rst index 85d9642e4a..de765a5467 100644 --- a/docs/sources/use/builder.rst +++ b/docs/sources/use/builder.rst @@ -205,6 +205,14 @@ to the entrypoint. The ``VOLUME`` instruction will add one or more new volumes to any container created from the image. +3.10 WORKDIR +-------------- + + ``WORKDIR /path/to/workdir`` + +The ``WORKDIR`` instruction sets the working directory in which +the command given by ``CMD`` is executed. + 4. Dockerfile Examples ====================== diff --git a/utils.go b/utils.go index 2264caefc9..b8f264fdb4 100644 --- a/utils.go +++ b/utils.go @@ -132,6 +132,9 @@ func MergeConfig(userConf, imageConf *Config) { if userConf.Entrypoint == nil || len(userConf.Entrypoint) == 0 { userConf.Entrypoint = imageConf.Entrypoint } + if userConf.WorkingDir == "" { + userConf.WorkingDir = imageConf.WorkingDir + } if userConf.VolumesFrom == "" { userConf.VolumesFrom = imageConf.VolumesFrom }