加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 在Docker中设置环境变量

发布时间:2020-12-15 21:25:54 所属栏目:安全 来源:网络整理
导读:我遇到了Docker创建一个没有设置环境变量的容器的问题,我知道我在图像定义中设置了该容器. 我创建了一个生成OpenSuse 42.3图像的Dockerfile.我需要在图像中设置一些环境变量,以便从图像中启动容器的任何人都可以使用我编译并放置在图像中的代码. 我创建了一
我遇到了Docker创建一个没有设置环境变量的容器的问题,我知道我在图像定义中设置了该容器.

我创建了一个生成OpenSuse 42.3图像的Dockerfile.我需要在图像中设置一些环境变量,以便从图像中启动容器的任何人都可以使用我编译并放置在图像中的代码.

我创建了一个名为“image_env_setup.sh”的shell文件,其中包含必要的环境变量定义.我还手动将这些环境变量定义添加到Dockerfile中.

USER codeUser
COPY ./docker/image_env_setup.sh /opt/MyCode

ENV PATH="$PATH":"/opt/MyCode/bin:/usr/lib64/mpi/gcc/openmpi/bin"
ENV LD_LIBRARY_PATH="/usr/lib64:/opt/MyCode/lib:"
ENV PS1="[u@docker: w]$"
ENV TERM="xterm-256color"
ENV GREP_OPTIONS="--color=auto"
ENV EDITOR=/usr/bin/vim

USER root
RUN chmod +x  /opt/MyCode/image_env_setup.sh
USER codeUser
RUN /opt/MyCode/image_env_setup.sh
RUN /bin/bash -c "source /opt/MyCode/image_env_setup.sh"

我用来创建容器的命令是:

docker run  -it -d --name ${containerName}  -u $userID:$groupID         
            -e USER=$USER --workdir="/home/codeUser"            
            --volume="${home}:/home/codeUser" ${imageName} /bin/bash  

唯一有效的方法是在容器启动时传递shell文件以便再次运行.

docker start $MyImageTag
docker exec -it $MyImageTag /bin/bash --rcfile /opt/MyCode/image_env_setup.sh

我认为在容器中设置shell变量并不困难,因此任何进入它的条目都会为用户提供已定义的shell变量.

解决方法

RUN条目无法修改环境变量(我假设您要在image_env_setup.sh中设置更多变量). Dockerfile中只有ENV条目(和–rcfile之类的docker选项可以改变环境).

当然,您也可以决定从.bashrc中获取image_env_setup.sh.

例如,您可以预先制作.bashrc并使用COPY将其拉入,或者执行

RUN echo '. /opt/MyCode/image_env_setup.sh' >> ~/.bashrc

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读