mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Add ENV variables support to WORKDIR build command
Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack) Docker-DCO-1.1-Signed-off-by: Adrien Folie <folie.adrien@gmail.com> (github: folieadrien) Conflicts: builder/builder.go This file has been deleted.
This commit is contained in:
parent
3f2e4e94d7
commit
2c5b5cfc92
2 changed files with 35 additions and 1 deletions
|
@ -531,9 +531,19 @@ instruction. For example:
|
||||||
WORKDIR c
|
WORKDIR c
|
||||||
RUN pwd
|
RUN pwd
|
||||||
|
|
||||||
The output of the final `pwd` command in this Dockerfile would be
|
The output of the final `pwd` command in this `Dockerfile` would be
|
||||||
`/a/b/c`.
|
`/a/b/c`.
|
||||||
|
|
||||||
|
The `WORKDIR` instruction can resolve environment variables previously set using
|
||||||
|
`ENV`. You can only use environment variables explicitly set in the `Dockerfile`.
|
||||||
|
For example:
|
||||||
|
|
||||||
|
ENV DIRPATH /path
|
||||||
|
WORKDIR $DIRPATH/$DIRNAME
|
||||||
|
|
||||||
|
The output of the final `pwd` command in this `Dockerfile` would be
|
||||||
|
`/path/$DIRNAME`
|
||||||
|
|
||||||
## ONBUILD
|
## ONBUILD
|
||||||
|
|
||||||
ONBUILD [INSTRUCTION]
|
ONBUILD [INSTRUCTION]
|
||||||
|
|
|
@ -973,6 +973,30 @@ func TestBuildRelativeWorkdir(t *testing.T) {
|
||||||
logDone("build - relative workdir")
|
logDone("build - relative workdir")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBuildWorkdirWithEnvVariables(t *testing.T) {
|
||||||
|
name := "testbuildworkdirwithenvvariables"
|
||||||
|
expected := "/test1/test2/$MISSING_VAR"
|
||||||
|
defer deleteImages(name)
|
||||||
|
_, err := buildImage(name,
|
||||||
|
`FROM busybox
|
||||||
|
ENV DIRPATH /test1
|
||||||
|
ENV SUBDIRNAME test2
|
||||||
|
WORKDIR $DIRPATH
|
||||||
|
WORKDIR $SUBDIRNAME/$MISSING_VAR`,
|
||||||
|
true)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
res, err := inspectField(name, "Config.WorkingDir")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if res != expected {
|
||||||
|
t.Fatalf("Workdir %s, expected %s", res, expected)
|
||||||
|
}
|
||||||
|
logDone("build - workdir with env variables")
|
||||||
|
}
|
||||||
|
|
||||||
func TestBuildEnv(t *testing.T) {
|
func TestBuildEnv(t *testing.T) {
|
||||||
name := "testbuildenv"
|
name := "testbuildenv"
|
||||||
expected := "[PATH=/test:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PORT=2375]"
|
expected := "[PATH=/test:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PORT=2375]"
|
||||||
|
|
Loading…
Reference in a new issue