# 基础镜像
FROM debian:12.13-slim

# 系统环境配置
ENV LANG=C.UTF-8 \
    LC_ALL=C.UTF-8 \
    LANGUAGE=C.UTF-8 \
    TERM=xterm-256color

# 维护者信息
LABEL maintainer="anian <support@anian.cc>"

# 关键软件版本
ENV NODE_VERSION=20.20.0
ENV PNPM_VERSION=10.32.1
ENV JDK17_VERSION=17.0.18+8
ENV JDK21_VERSION=21.0.10+7

# 将 Node 和 pnpm 加入系统 PATH
ENV PATH="/root/.local/share/pnpm:/usr/local/node/bin:${PATH}"

# 安装基础工具
RUN apt-get update && apt-get install -y \
    curl \
    wget \
    git \
    unzip \
    xz-utils \
    ca-certificates \
    bash \
    && rm -rf /var/lib/apt/lists/*

# 创建 Java 目录
RUN mkdir -p /opt/java

# 固定版本安装 Java 17
RUN curl -L https://api.adoptium.net/v3/binary/version/jdk-${JDK17_VERSION}/linux/x64/jdk/hotspot/normal/eclipse \
    | tar -xz -C /opt/java \
    && mv /opt/java/jdk-17* /opt/java/java17

# 固定版本安装 Java 21
RUN curl -L https://api.adoptium.net/v3/binary/version/jdk-${JDK21_VERSION}/linux/x64/jdk/hotspot/normal/eclipse \
    | tar -xz -C /opt/java \
    && mv /opt/java/jdk-21* /opt/java/java21

# 注册 Java
RUN update-alternatives --install /usr/bin/java java /opt/java/java17/bin/java 1 \
 && update-alternatives --install /usr/bin/java java /opt/java/java21/bin/java 2 \
 && update-alternatives --install /usr/bin/javac javac /opt/java/java17/bin/javac 1 \
 && update-alternatives --install /usr/bin/javac javac /opt/java/java21/bin/javac 2

# 默认 Java17
RUN update-alternatives --set java /opt/java/java17/bin/java \
 && update-alternatives --set javac /opt/java/java17/bin/javac

# 安装 Node.js
RUN mkdir -p /usr/local/node \
 && curl -fsSL https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz \
 | tar -xJ -C /usr/local/node --strip-components=1

# 安装 pnpm
RUN npm install -g pnpm@${PNPM_VERSION}

# 添加 Java17 切换命令
RUN echo '#!/bin/bash\nupdate-alternatives --set java /opt/java/java17/bin/java\nupdate-alternatives --set javac /opt/java/java17/bin/javac\necho "Switched to Java 17"' > /usr/local/bin/use-java17 \
 && chmod +x /usr/local/bin/use-java17

# 添加 Java21 切换命令
RUN echo '#!/bin/bash\nupdate-alternatives --set java /opt/java/java21/bin/java\nupdate-alternatives --set javac /opt/java/java21/bin/javac\necho "Switched to Java 21"' > /usr/local/bin/use-java21 \
 && chmod +x /usr/local/bin/use-java21

# 设置工作目录为 /app
WORKDIR /app

# 容器启动后默认进入 bash 终端
CMD ["/bin/bash"]