FROM centos:7
LABEL maintainer="wangjianyu@qq.com"
# 1. 修复 CentOS 7 的 yum 源(因官方源已关闭)
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
# 2. 安装 OpenJDK 8(包含 JDK 和 JRE)
RUN yum install -y java-1.8.0-openjdk-devel java-1.8.0-openjdk which vim net-tools && \
yum clean all
# 3. 自动检测并设置环境变量
RUN \
# 检测 JAVA_HOME(通过 javac 路径)
JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac)))) && \
# 检测 JRE_HOME(通过 java 路径)
JRE_HOME=$(dirname $(dirname $(readlink -f $(which java)))) && \
# 写入环境变量配置文件
echo "export JAVA_HOME=${JAVA_HOME}" >> /etc/profile.d/java_env.sh && \
echo "export JRE_HOME=${JRE_HOME}" >> /etc/profile.d/java_env.sh && \
echo 'export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib' >> /etc/profile.d/java_env.sh && \
echo 'export PATH=${JAVA_HOME}/bin:${PATH}' >> /etc/profile.d/java_env.sh
# 4. 硬编码环境变量(双保险)
ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
ENV JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk/jre
ENV CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
ENV PATH=$JAVA_HOME/bin:$PATH
# 5. 验证安装
RUN source /etc/profile.d/java_env.sh && \
java -version && \
javac -version && \
echo "JAVA_HOME=${JAVA_HOME}" && \
echo "JRE_HOME=${JRE_HOME}" && \
echo "CLASSPATH=${CLASSPATH}" && \
ls -l $JAVA_HOME $JRE_HOME
# 6. 容器启动时自动加载环境变量
CMD ["/bin/bash", "-c", "source /etc/profile.d/java_env.sh && /bin/bash"]