Set environmental variables for different user in Docker

时间:2018-04-18 17:44:31

标签: linux docker virtual-machine

I am aware that we can specify the option -e during the run command to set environment variables in a docker. This only sets the PATH for the root user. Let us say if I have another user called admin and want to set the environment variables for that user as well, how can I achieve that?

This is the command I tried to set environment variables.

docker run -t -d -v /usr/hdp:/usr/hdp -v /usr/lib/jvm/:/usr/lib/jvm/ -e JAVA_HOME="${java_home}" -e HADOOP_HOME="${hadoop_home}" -e PATH=$PATH:$JAVA_HOME/bin -e PATH=$PATH:$HADOOP_HOME/bin gtimage

This only sets the PATH under root user but not for my admin user which a software that I installed during docker build has created.

1 个答案:

答案 0 :(得分:0)

我上面的问题没有一个完美的解决方案,但我尝试了类似下面的内容以用户身份登录并为该用户设置环境变量。除非找不到问题的解决方案,否则我不建议采用以下方式。如果您找到比此更好的方法,请告诉我

docker exec $containervalue bash -c 'env | grep PATH >> temp && chmod 775 temp && mv temp /opt/nagios'
docker exec --user ngadmin $containervalue bash -c 'cat ~/temp >> ~/.bashrc &&  source ~/.bashrc'