linux下jdk环境安装

# 源码安装

# 源码

# install jdk
cd $WORKDIR/soft/jdk \
  && tar -zxvf jdk-8u241-linux-x64.tar.gz \
  && mv jdk1.8.0_241/ /usr/local/java/ \
  && rm -rf *.gz
1
2
3
4
5

# docker镜像

在dockerfile echo添加环境变量,或者要在一个文件中输入多行文本,使用\n即可

列:dockerfile echo添加JDK环境变量

FROM debian:latest
ADD jdk1.8.0 /opt/jdk1.8.0/

# 用echo添加多行内容
RUN echo 'export JAVA_HOME=/opt/jdk1.8.0 \n\
export JRE_HOME=/opt/jdk1.8.0/jre \n\
export CLASSPATH=.:$JAVA_HOME/lib:/dt.jar:$JAVA_HOME/lib/tools.jar \n\
PATH=$PATH:$JAVA_HOME/bin \n\
ulimit -u 4096'\
>> ~/.bashrc

CMD ["/bin/bash"]
1
2
3
4
5
6
7
8
9
10
11
12

要设置ENV配置;

# 设置JAVA_HOME

在docker情况下要修改/root/.bashrc这个配置才有用;修改/etc/profile失效;

vim /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile
1
2
3
4
5
6
7

注意这里echo多行;

第三种方式:调用去触发sh文件;

ENTRYPOINT ["/bin/bash", "./entrypoint.sh"]
1

docker中要修改/root/.bashrc中设置,修改在/etc/profile无效;在[entrypoint.sh]中设置才有用;

echo 'export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
PATH=$PATH:$JAVA_HOME/bin ' >> /root/.bashrc
source /root/.bashrc
1
2
3
4
5

第四种方式:ENV 用于配置环境变量;**【Docker推荐用这种方式】**也可以;

ENV JAVA_HOME=/usr/local/java
ENV JRE_HOME=/usr/local/java/jre
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH=$PATH:$JAVA_HOME/bin

#定义工作目录
#ENV WORK_PATH /usr/local
#删除分割文件
#RUN rm $WORK_PATH/openjdksrc-*
1
2
3
4
5
6
7
8
9

方式一追加;

RUN cd /srv/app/soft/jdk \
  && tar -zxvf jdk-8u241-linux-x64.tar.gz \
  && mv jdk1.8.0_241/ /usr/local/java/ 
RUN echo 'export JAVA_HOME=/usr/local/java \n\
export JRE_HOME=/usr/local/java/jre \n\
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH \n\
PATH=$PATH:$JAVA_HOME/bin '\
>> /etc/profile
RUN source /etc/profile
1
2
3
4
5
6
7
8
9

方式二追加;

docker情况下;这种写进入的有问题;直接显示全部路径;部分参数会丢失;只适合直接用认为手动修改;

cat>>/etc/profile<<EOF
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin
EOF
source /etc/profile
1
2
3
4
5
6
7

写入后:$JAVA_HOME相关都丢失;

export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:/lib/dt.jar:/lib/tools.jar:/lib:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin
1
2
3
4

说明:

  • 其中,<<EOF 表示当遇到EOF时结束输入;
  • cat>test1.txt<<EOF 这间没有空格;
  • $号要加\转义字符;

示范:

#! /bin/bash
filename="/test/filename.txt"
cat>"${filename}"<<EOF
hello world
代码改变世界 Coding Changes the World
100 \$
她买了张彩票,中了3,300多万美元。
She bought a lottery ticket and won more than\$ 33 million.
EOF
1
2
3
4
5
6
7
8
9
上次更新: 2022/04/15, 05:41:32
×