# 使用Rocky Linux 8作为基础镜像
FROM rockylinux:8

# 设置元数据标签
LABEL maintainer="小蚂蚁云团队" \
      version="1.0" \
      description="基于Rocky Linux 8的JRE 8u202运行环境（支持中英文）" \
      java.version="1.8.0_202"

# 设置环境变量
ENV TZ=Asia/Shanghai \
    LANG=zh_CN.UTF-8 \
    LANGUAGE=zh_CN:zh:en_US:en \
    LC_ALL=zh_CN.UTF-8 \
    JAVA_HOME=/usr/local/jre1.8.0_202 \
    PATH=/usr/local/jre1.8.0_202/bin:$PATH

# 设置工作目录
WORKDIR /tmp

# 复制本地JRE压缩包到镜像中
COPY jre-8u202-linux-x64.tar.gz /tmp/

# 安装必要的系统包并配置环境
RUN set -eux; \
    \
    # 更新系统并安装中文语言支持
    dnf update -y && \
    dnf install -y \
        tzdata \
        glibc-langpack-zh \
        glibc-langpack-en \
        fontconfig \
        dejavu-sans-fonts \
        dejavu-serif-fonts \
        dejavu-sans-mono-fonts \
        wqy-microhei-fonts \
        && \
    \
    # 清理dnf缓存以减少镜像大小
    dnf clean all && \
    rm -rf /var/cache/dnf; \
    \
    # 配置时区
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
    echo $TZ > /etc/timezone; \
    \
    # 生成中文本地化配置
    localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 && \
    localedef -c -f UTF-8 -i en_US en_US.UTF-8; \
    \
    # 设置系统语言环境
    echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf; \
    \
    # 创建Java安装目录
    mkdir -p /usr/local/java; \
    \
    # 解压JRE并设置权限（JRE包解压后通常直接包含jre目录）
    tar -xzf jre-8u202-linux-x64.tar.gz -C /usr/local/ && \
    \
    # 删除临时文件
    rm -f jre-8u202-linux-x64.tar.gz; \
    \
    # 创建符号链接以便版本升级时更容易管理
    ln -sf /usr/local/jre1.8.0_202 /usr/bin/jre; \
    \
    # 创建字体目录
    mkdir -p /usr/share/fonts/ && \
    chmod 755 /usr/share/fonts/ && \
    cp ./fonts/simsun.ttf /usr/share/fonts/ && \
    \
    # 更新字体缓存
    fc-cache -fv; \
    \
    # 验证JRE安装
    java -version; \
    \
    # 创建非root用户用于运行Java应用
    groupadd -r esxi && \
    useradd -r -g esxi -d /opt/esxi -s /bin/bash esxi && \
    mkdir -p /opt/esxi && \
    chown -R esxi:esxi /opt/esxi;

# 切换到应用目录
WORKDIR /opt/apps

# 设置默认用户（推荐在生产环境中启用）
#USER esxi

# 设置健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
  CMD java -version > /dev/null 2>&1 || exit 1

# 设置默认启动命令
CMD ["java", "-version"]