关于使用docker里面java环境每次重启问题

1、问题

测试服务器java环境变量老是失效(非常气人,测试同事老是说系统坏了,我感觉在怀疑我的技术)

我以前的配置是打开 /etc/profile 文件,在后面加上环境变量

整体环境是在宿主机上部署了一套docker,使用docker进行java环境变量配置,然后使用jar包文件进行java功能实现

export PATH CLASSPATH JAVA_HOMEVA_HOME=/www/java/jdk8

CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib

PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

export PATH CLASSPATH JAVA_HOME

使用 source /etc/profile 进行重载配置(往常到这一步已经可以了,但是,最近莫名其妙的就开始崩溃,我怀疑是我另一个开发的同事故意的,但是我没有证据,要是我找到证据,没有一个火锅好不了)

2、分析

由于我只使用了 etc/profile 文件

根据官方解释,对于每个登录的用户,都可以加载全局变量。

[En]

According to the official explanation, for every logged-in user, global variables can be loaded.

问题就出在这里,我使用exit退出之后,重新进入docker,奇怪的事情来了,它没有启动,这里应该是进入docker不算打开一个shell,所以没有载入,具体需要试一试,但是我这里的问题确实是失效了,所以etc/profile文件对于docker进入可能有一些奇怪的问题(毕竟正式服我也是这样配置的,完全没有问题,这里下一期继续研究,现在先解决测试)

3、开始修复(我是反对的,程序狗表示不想进化,我就想躺平,能用不好蛮,证明我还有点作用,这个想法有问题,不要学不要学)

有四个在系统启动或者是进入shell的时候会访问的数据文件:

(1) /etc/profile

此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从 /etc/profile.d 目录的配置文件中收集 shell 的设置。如果你有对 /etc/profile 有修改的话必须得 source 一下你的修改才会生效,此修改对每个用户都生效。

(2) /etc/bash.bahsrc

为每一个运行 bash shell 的用户执行此文件。当 bash shell 被打开时,该文件被读取。如果你想对所有的使用 bash 的用户修改某个配置并在以后打开的 bash 都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个 bash 即可生效。

(3) ~/.bash_profile(显然不是我这个问题)

每个用户都可使用该文件输入专用于自己使用的 shell 信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的~/ .bashrc 文件。此文件类似于 /etc/profile,也是需要需要 source 才会生效,/etc/profile 对所有用户生效,~/.bash_profile 只对当前用户生效。

(4) ~/.bashrc(这里显然也不是)

该文件包含专用于你的 bash shell 的 bash 信息,当登录时以及每次打开新的 shell 时,该文件被读取。(每个用户都有一个 ~/.bashrc 文件,在用户目录下) 此文件类似于 /etc/bashrc,不需要重启就可以生效,重新打开一个 bash 即可生效,/etc/bashrc 对所有用户新打开的 bash 都生效,但 ~/.bashrc 只对当前用户新打开的 bash 生效。

我使用的是 /etc/profile 不行,我准备使用(2)试一下,从描述上看,应该是可以。

4、解决

(使用单一命令会有问题,使用(1)退出后不会生效,使用(2)可以解决问题,但我对这个服务器有自己的想法,他没有解决,我使用时使用混合模式。)

[En]

(there will be problems with using a single command, using (1) will not take effect after exit, using (2) can solve the problem, but I have my own ideas on this server, he didn’t solve it, and I use mixed mode when I use it.)

还是使用配置 /etc/profile 文件的方法去解决问题,不同点在于为了防止下一次进入的时候环境失效的问题,我使用了/etc/bash.bahsrc 文件,在里面最后加上 source /etc/profile,这样就能解决问题了,我真是太聪明了

结论:如果你不能解决问题的人,那就解决问题吧!

[En]

Conclusion: if you can’t solve the person who asked the problem, solve the problem!

欢迎讨论,共勉

Original: https://www.cnblogs.com/wangbaishi/p/16578606.html
Author: wangbaishi
Title: 关于使用docker里面java环境每次重启问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/522880/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球