From 57b9467f45571c1bd98ebe4b73c6cf3d97ff051c Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Sat, 22 Feb 2014 20:06:37 -0700 Subject: [PATCH] Add support for autodetected HOME from USER (if HOME is unset) Docker-DCO-1.1-Signed-off-by: Andrew Page (github: tianon) --- builder/builder.go | 2 +- daemon/container.go | 5 ++++- integration-cli/docker_cli_build_test.go | 2 +- integration-cli/docker_cli_run_test.go | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/builder/builder.go b/builder/builder.go index a99139896f..967f37e92b 100644 --- a/builder/builder.go +++ b/builder/builder.go @@ -120,7 +120,7 @@ func (b *buildFile) CmdFrom(name string) error { b.config = image.Config } if b.config.Env == nil || len(b.config.Env) == 0 { - b.config.Env = append(b.config.Env, "HOME=/", "PATH="+daemon.DefaultPathEnv) + b.config.Env = append(b.config.Env, "PATH="+daemon.DefaultPathEnv) } // Process ONBUILD triggers if they exist if nTriggers := len(b.config.OnBuild); nTriggers != 0 { diff --git a/daemon/container.go b/daemon/container.go index 537cfc6a75..d62eb6d2fa 100644 --- a/daemon/container.go +++ b/daemon/container.go @@ -1043,9 +1043,12 @@ func (container *Container) setupLinkedContainers() ([]string, error) { func (container *Container) createDaemonEnvironment(linkedEnv []string) []string { // Setup environment env := []string{ - "HOME=/", "PATH=" + DefaultPathEnv, "HOSTNAME=" + container.Config.Hostname, + // Note: we don't set HOME here because it'll get autoset intelligently + // based on the value of USER inside dockerinit, but only if it isn't + // set already (ie, that can be overridden by setting HOME via -e or ENV + // in a Dockerfile). } if container.Config.Tty { env = append(env, "TERM=xterm") diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index bf786070d2..823000b5c2 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -700,7 +700,7 @@ func TestBuildRelativeWorkdir(t *testing.T) { func TestBuildEnv(t *testing.T) { name := "testbuildenv" - expected := "[HOME=/ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PORT=2375]" + expected := "[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PORT=2375]" defer deleteImages(name) _, err := buildImage(name, `FROM busybox diff --git a/integration-cli/docker_cli_run_test.go b/integration-cli/docker_cli_run_test.go index 63d3b133f1..8f54668098 100644 --- a/integration-cli/docker_cli_run_test.go +++ b/integration-cli/docker_cli_run_test.go @@ -676,13 +676,13 @@ func TestEnvironment(t *testing.T) { goodEnv := []string{ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "HOME=/", "HOSTNAME=testing", "FALSE=true", "TRUE=false", "TRICKY=tri", "cky", "", + "HOME=/root", } sort.Strings(goodEnv) if len(goodEnv) != len(actualEnv) {