# 使用 Debian slim FROM debian:12-slim ENV LANG=C.UTF-8 \ LC_ALL=C.UTF-8 \ LANGUAGE=C.UTF-8 \ TERM=xterm-256color LABEL maintainer="anian " ENV NODE_VERSION=20.20.0 ENV PNPM_VERSION=latest 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/latest/17/ga/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/latest/21/ga/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} # 添加 Java 切换命令 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 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 WORKDIR /app CMD ["/bin/bash"]