diff --git a/buildfile.go b/buildfile.go index 0666ba4388..64c4503c9a 100644 --- a/buildfile.go +++ b/buildfile.go @@ -197,6 +197,11 @@ func (b *buildFile) CmdExpose(args string) error { return b.commit("", b.config.Cmd, fmt.Sprintf("EXPOSE %v", ports)) } +func (b *buildFile) CmdUser(args string) error { + b.config.User = args + return b.commit("", b.config.Cmd, fmt.Sprintf("USER %v", args)) +} + func (b *buildFile) CmdInsert(args string) error { return fmt.Errorf("INSERT has been deprecated. Please use ADD instead") } diff --git a/buildfile_test.go b/buildfile_test.go index d89c40d16c..14986161d8 100644 --- a/buildfile_test.go +++ b/buildfile_test.go @@ -270,6 +270,17 @@ func TestBuildMaintainer(t *testing.T) { } } +func TestBuildUser(t *testing.T) { + img := buildImage(testContextTemplate{` + from {IMAGE} + user dockerio + `, nil, nil}, t, nil, true) + + if img.Config.User != "dockerio" { + t.Fail() + } +} + func TestBuildEnv(t *testing.T) { img := buildImage(testContextTemplate{` from {IMAGE} diff --git a/docs/sources/use/builder.rst b/docs/sources/use/builder.rst index de765a5467..3f0670e1d6 100644 --- a/docs/sources/use/builder.rst +++ b/docs/sources/use/builder.rst @@ -205,14 +205,23 @@ to the entrypoint. The ``VOLUME`` instruction will add one or more new volumes to any container created from the image. -3.10 WORKDIR --------------- +3.10 USER +--------- + + ``USER daemon`` + +The ``USER`` instruction sets the username or UID to use when running +the image. + +3.11 WORKDIR +------------ ``WORKDIR /path/to/workdir`` The ``WORKDIR`` instruction sets the working directory in which the command given by ``CMD`` is executed. + 4. Dockerfile Examples ======================