# syntax=docker/dockerfile:1 # Gitea Action Runner Java Image # 基于 gitea_runner_base 添加多版本 JDK 和 Maven FROM gitea_runner_base:latest LABEL maintainer="www.imyeyu.com" LABEL description="Gitea Action Runner with JDK 7/8/11/17/21 and Maven 3" # JDK 安装目录 ENV JAVA_BASE=/usr/lib/jvm # 安装 Alpine 仓库中的 OpenJDK 版本 RUN apk add --no-cache \ openjdk8 \ openjdk11 \ openjdk17 \ openjdk21 # JDK 7 - 从 Azul Zulu 下载 (Alpine musl 版本) ARG ZULU7_VERSION=7.56.0.11-ca-jdk7.0.352 ARG ZULU7_URL=https://cdn.azul.com/zulu/bin/zulu${ZULU7_VERSION}-linux_musl_x64.tar.gz RUN mkdir -p ${JAVA_BASE} \ && wget -q ${ZULU7_URL} -O /tmp/zulu7.tar.gz \ && tar -xzf /tmp/zulu7.tar.gz -C ${JAVA_BASE} \ && mv ${JAVA_BASE}/zulu${ZULU7_VERSION}-linux_musl_x64 ${JAVA_BASE}/java-7-zulu \ && rm /tmp/zulu7.tar.gz # Maven 3 ARG MAVEN_VERSION=3.9.9 ARG MAVEN_URL=https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz ENV MAVEN_HOME=/opt/maven RUN mkdir -p ${MAVEN_HOME} \ && wget -q ${MAVEN_URL} -O /tmp/maven.tar.gz \ && tar -xzf /tmp/maven.tar.gz -C ${MAVEN_HOME} --strip-components=1 \ && rm /tmp/maven.tar.gz \ && ln -s ${MAVEN_HOME}/bin/mvn /usr/local/bin/mvn # 默认使用 JDK 17 ENV JAVA_HOME=${JAVA_BASE}/java-17-openjdk ENV PATH="${JAVA_HOME}/bin:${MAVEN_HOME}/bin:${PATH}" # 创建版本切换脚本 RUN cat <<'EOF' > /usr/local/bin/use-java #!/bin/bash case "$1" in 7) export JAVA_HOME=/usr/lib/jvm/java-7-zulu ;; 8) export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk ;; 11) export JAVA_HOME=/usr/lib/jvm/java-11-openjdk ;; 17) export JAVA_HOME=/usr/lib/jvm/java-17-openjdk ;; 21) export JAVA_HOME=/usr/lib/jvm/java-21-openjdk ;; *) echo "Usage: source use-java [7|8|11|17|21]"; return 1 ;; esac export PATH="${JAVA_HOME}/bin:${PATH}" echo "Switched to Java $1: $(java -version 2>&1 | head -1)" EOF RUN chmod +x /usr/local/bin/use-java # 验证安装 RUN echo "=== Installed JDK versions ===" \ && echo "JDK 7: $(/usr/lib/jvm/java-7-zulu/bin/java -version 2>&1 | head -1)" \ && echo "JDK 8: $(/usr/lib/jvm/java-1.8-openjdk/bin/java -version 2>&1 | head -1)" \ && echo "JDK 11: $(/usr/lib/jvm/java-11-openjdk/bin/java -version 2>&1 | head -1)" \ && echo "JDK 17: $(/usr/lib/jvm/java-17-openjdk/bin/java -version 2>&1 | head -1)" \ && echo "JDK 21: $(/usr/lib/jvm/java-21-openjdk/bin/java -version 2>&1 | head -1)" \ && echo "Maven: $(mvn -version 2>&1 | head -1)"