@@ -3,7 +3,7 @@ FROM ubuntu:latest
33ENV DEBIAN_FRONTEND=noninteractive
44ENV TZ=Asia/Shanghai
55
6- # 安装基本工具和库
6+ # 安装系统依赖需求
77RUN apt-get update && apt-get upgrade -y && apt-get install -y \
88 neofetch \
99 build-essential \
@@ -22,6 +22,13 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \
2222 software-properties-common \
2323 zip \
2424 unzip \
25+ libbz2-dev \
26+ libreadline-dev \
27+ libsqlite3-dev \
28+ libssl-dev \
29+ libffi-dev \
30+ liblzma-dev \
31+ zlib1g-dev \
2532 && rm -rf /var/lib/apt/lists/*
2633
2734# 安装 NVM
@@ -42,17 +49,6 @@ RUN . "$NVM_DIR/nvm.sh" \
4249 && corepack prepare yarn@stable --activate \
4350 && npm install -g bun
4451
45- # 安装 pyenv 依赖
46- RUN apt-get update && apt-get install -y \
47- libbz2-dev \
48- libreadline-dev \
49- libsqlite3-dev \
50- libssl-dev \
51- libffi-dev \
52- liblzma-dev \
53- zlib1g-dev \
54- && rm -rf /var/lib/apt/lists/*
55-
5652# 安装 pyenv
5753ENV PYENV_ROOT=/root/.pyenv
5854ENV PATH=$PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
@@ -82,17 +78,17 @@ RUN pip install --no-cache-dir \
8278 scikit-learn \
8379 requests
8480
85- # 安装 JDK 21 和 25
86- RUN apt-get update && apt-get install -y openjdk-21-jdk \
87- && rm -rf /var/lib/apt/lists/*
88-
89- # 安装 JDK 25 (从 Oracle 或其他源)
90- RUN wget https://download.oracle.com/java/25/latest/jdk-25_linux-x64_bin.tar.gz \
91- && mkdir -p /usr/lib/jvm \
92- && tar -xzf jdk-25_linux-x64_bin.tar.gz -C /usr/lib/jvm \
93- && rm jdk-25_linux-x64_bin.tar.gz
94-
95- ENV JAVA_HOME=/usr/lib/jvm/ java-21-openjdk-amd64
81+ # Install SDKMAN! and manage multiple JDK versions
82+ ENV SDKMAN_DIR=/root/.sdkman
83+ ENV JAVA21_VERSION=21.0.5-tem
84+ ENV JAVA25_VERSION=25.ea.1-open
85+ RUN curl -s "https://get.sdkman.io" | bash \
86+ && bash -c "source $SDKMAN_DIR/bin/sdkman-init.sh \
87+ && sdk install java ${JAVA21_VERSION} \
88+ && sdk install java ${JAVA25_VERSION} \
89+ && sdk default java ${JAVA21_VERSION}"
90+
91+ ENV JAVA_HOME=$SDKMAN_DIR/candidates/ java/current
9692ENV PATH=$JAVA_HOME/bin:$PATH
9793
9894# 安装 Maven
@@ -130,8 +126,10 @@ RUN echo '' >> /root/.bashrc \
130126 && echo 'export CONDA_DIR="/opt/conda"' >> /root/.bashrc \
131127 && echo 'export PATH="$CONDA_DIR/bin:$PATH"' >> /root/.bashrc \
132128 && echo '' >> /root/.bashrc \
133- && echo '# Java configuration' >> /root/.bashrc \
134- && echo 'export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"' >> /root/.bashrc \
129+ && echo '# SDKMAN configuration' >> /root/.bashrc \
130+ && echo 'export SDKMAN_DIR="/root/.sdkman"' >> /root/.bashrc \
131+ && echo '[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ] && source "$SDKMAN_DIR/bin/sdkman-init.sh"' >> /root/.bashrc \
132+ && echo 'export JAVA_HOME="$SDKMAN_DIR/candidates/java/current"' >> /root/.bashrc \
135133 && echo 'export PATH="$JAVA_HOME/bin:$PATH"' >> /root/.bashrc \
136134 && echo '' >> /root/.bashrc \
137135 && echo '# Maven configuration' >> /root/.bashrc \
@@ -145,6 +143,8 @@ RUN echo '' >> /root/.bashrc \
145143# 显示版本信息
146144RUN echo "=== Environment Setup Complete ===" \
147145 && neofetch \
146+ && echo "\n Python Version:" && python --version \
147+ && echo "\n Conda Version:" && conda --version \
148148 && echo "\n Node Version:" && . "$NVM_DIR/nvm.sh" && node --version \
149149 && echo "\n NPM Version:" && . "$NVM_DIR/nvm.sh" && npm --version \
150150 && echo "\n Yarn Version:" && . "$NVM_DIR/nvm.sh" && yarn --version \
0 commit comments