Browse code

Add support for autodetected HOME from USER (if HOME is unset)

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)

Tianon Gravi authored on 2014/02/23 12:06:37
Showing 4 changed files
... ...
@@ -120,7 +120,7 @@ func (b *buildFile) CmdFrom(name string) error {
120 120
 		b.config = image.Config
121 121
 	}
122 122
 	if b.config.Env == nil || len(b.config.Env) == 0 {
123
-		b.config.Env = append(b.config.Env, "HOME=/", "PATH="+daemon.DefaultPathEnv)
123
+		b.config.Env = append(b.config.Env, "PATH="+daemon.DefaultPathEnv)
124 124
 	}
125 125
 	// Process ONBUILD triggers if they exist
126 126
 	if nTriggers := len(b.config.OnBuild); nTriggers != 0 {
... ...
@@ -1043,9 +1043,12 @@ func (container *Container) setupLinkedContainers() ([]string, error) {
1043 1043
 func (container *Container) createDaemonEnvironment(linkedEnv []string) []string {
1044 1044
 	// Setup environment
1045 1045
 	env := []string{
1046
-		"HOME=/",
1047 1046
 		"PATH=" + DefaultPathEnv,
1048 1047
 		"HOSTNAME=" + container.Config.Hostname,
1048
+		// Note: we don't set HOME here because it'll get autoset intelligently
1049
+		// based on the value of USER inside dockerinit, but only if it isn't
1050
+		// set already (ie, that can be overridden by setting HOME via -e or ENV
1051
+		// in a Dockerfile).
1049 1052
 	}
1050 1053
 	if container.Config.Tty {
1051 1054
 		env = append(env, "TERM=xterm")
... ...
@@ -700,7 +700,7 @@ func TestBuildRelativeWorkdir(t *testing.T) {
700 700
 
701 701
 func TestBuildEnv(t *testing.T) {
702 702
 	name := "testbuildenv"
703
-	expected := "[HOME=/ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PORT=2375]"
703
+	expected := "[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PORT=2375]"
704 704
 	defer deleteImages(name)
705 705
 	_, err := buildImage(name,
706 706
 		`FROM busybox
... ...
@@ -676,13 +676,13 @@ func TestEnvironment(t *testing.T) {
676 676
 
677 677
 	goodEnv := []string{
678 678
 		"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
679
-		"HOME=/",
680 679
 		"HOSTNAME=testing",
681 680
 		"FALSE=true",
682 681
 		"TRUE=false",
683 682
 		"TRICKY=tri",
684 683
 		"cky",
685 684
 		"",
685
+		"HOME=/root",
686 686
 	}
687 687
 	sort.Strings(goodEnv)
688 688
 	if len(goodEnv) != len(actualEnv) {