mirror of https://github.com/containers/podman.git
Also substitute $HOME in runlabel with user's homedir
Some programs have their configuration files relative to the user's home. It would be convenient being able to mount these into the container, but that requires expansion of `~` or `$HOME` in a label. This commit adds support for that for the `runlabel` command. Signed-off-by: Dan Čermák <dcermak@suse.com>
This commit is contained in:
parent
6ec2c0b43b
commit
46f247d880
|
@ -173,6 +173,13 @@ func generateRunlabelCommand(runlabel string, img *libimage.Image, inputName str
|
|||
return ""
|
||||
}
|
||||
return d
|
||||
case "HOME":
|
||||
h, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
logrus.Warnf("Unable to determine user's home directory: %s", err)
|
||||
return ""
|
||||
}
|
||||
return h
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
|
|
@ -12,16 +12,16 @@ load helpers
|
|||
rand3=$(random_string 30)
|
||||
cat >$containerfile <<EOF
|
||||
FROM $IMAGE
|
||||
LABEL INSTALL podman run -t -i --rm \\\${OPT1} --privileged -v /:/host --net=host --ipc=host --pid=host -e HOST=/host -e NAME=\\\${NAME} -e IMAGE=\\\${IMAGE} -e CONFDIR=/etc/\\\${NAME} -e LOGDIR=/var/log/\\\${NAME} -e DATADIR=/var/lib/\\\${NAME} \\\${IMAGE} \\\${OPT2} /bin/install.sh \\\${OPT3}
|
||||
LABEL INSTALL podman run -t -i --rm \\\${OPT1} --privileged -v /:/host --net=host --ipc=host --pid=host -e HOST=/host -e HOMEDIR=\\\$HOME -e NAME=\\\${NAME} -e IMAGE=\\\${IMAGE} -e CONFDIR=/etc/\\\${NAME} -e LOGDIR=/var/log/\\\${NAME} -e DATADIR=/var/lib/\\\${NAME} \\\${IMAGE} \\\${OPT2} /bin/install.sh \\\${OPT3}
|
||||
EOF
|
||||
|
||||
run_podman build -t runlabel_image $tmpdir
|
||||
|
||||
run_podman container runlabel --opt1=${rand1} --opt2=${rand2} --opt3=${rand3} --name test1 --display install runlabel_image
|
||||
is "$output" "command: ${PODMAN} run -t -i --rm ${rand1} --privileged -v /:/host --net=host --ipc=host --pid=host -e HOST=/host -e NAME=test1 -e IMAGE=localhost/runlabel_image:latest -e CONFDIR=/etc/test1 -e LOGDIR=/var/log/test1 -e DATADIR=/var/lib/test1 localhost/runlabel_image:latest ${rand2} /bin/install.sh ${rand3}" "generating runlabel install command"
|
||||
is "$output" "command: ${PODMAN} run -t -i --rm ${rand1} --privileged -v /:/host --net=host --ipc=host --pid=host -e HOST=/host -e HOMEDIR=${HOME} -e NAME=test1 -e IMAGE=localhost/runlabel_image:latest -e CONFDIR=/etc/test1 -e LOGDIR=/var/log/test1 -e DATADIR=/var/lib/test1 localhost/runlabel_image:latest ${rand2} /bin/install.sh ${rand3}" "generating runlabel install command"
|
||||
|
||||
run_podman container runlabel --opt3=${rand3} --display install runlabel_image
|
||||
is "$output" "command: ${PODMAN} run -t -i --rm --privileged -v /:/host --net=host --ipc=host --pid=host -e HOST=/host -e NAME=runlabel_image -e IMAGE=localhost/runlabel_image:latest -e CONFDIR=/etc/runlabel_image -e LOGDIR=/var/log/runlabel_image -e DATADIR=/var/lib/runlabel_image localhost/runlabel_image:latest /bin/install.sh ${rand3}" "generating runlabel without name and --opt1, --opt2"
|
||||
is "$output" "command: ${PODMAN} run -t -i --rm --privileged -v /:/host --net=host --ipc=host --pid=host -e HOST=/host -e HOMEDIR=${HOME} -e NAME=runlabel_image -e IMAGE=localhost/runlabel_image:latest -e CONFDIR=/etc/runlabel_image -e LOGDIR=/var/log/runlabel_image -e DATADIR=/var/lib/runlabel_image localhost/runlabel_image:latest /bin/install.sh ${rand3}" "generating runlabel without name and --opt1, --opt2"
|
||||
|
||||
run_podman 125 container runlabel --opt1=${rand1} --opt2=${rand2} --opt3=${rand3} --name test1 --display run runlabel_image
|
||||
is "$output" "Error: cannot find the value of label: run in image: runlabel_image" "generating runlabel run command"
|
||||
|
|
Loading…
Reference in New Issue