52 lines
1.8 KiB
Docker
52 lines
1.8 KiB
Docker
# syntax=docker/dockerfile:1
|
||
# Gitea Action Runner Java Image
|
||
# 基于 gitea_runner_base 添加多版本 JDK 和 Maven
|
||
|
||
FROM timi/gitea_runner_base:latest
|
||
|
||
LABEL maintainer="www.imyeyu.com"
|
||
LABEL description="Gitea Action Runner with JDK 8/21 and Maven 3"
|
||
|
||
# JDK 安装目录
|
||
ENV JAVA_BASE=/usr/lib/jvm
|
||
|
||
# 安装 Alpine 仓库中的 OpenJDK 版本(仅保留 8 和 21)
|
||
RUN apk add --no-cache \
|
||
openjdk8 \
|
||
openjdk21
|
||
|
||
# Maven 3
|
||
ARG MAVEN_VERSION=3.9.12
|
||
ARG MAVEN_URL=https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz
|
||
ARG MAVEN_URL_ARCHIVE=https://archive.apache.org/dist/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 \
|
||
|| wget -q ${MAVEN_URL_ARCHIVE} -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 21
|
||
ENV JAVA_HOME=${JAVA_BASE}/java-21-openjdk
|
||
ENV PATH="${JAVA_HOME}/bin:${MAVEN_HOME}/bin:${PATH}"
|
||
|
||
# 创建版本切换脚本
|
||
RUN cat <<'EOF' > /usr/local/bin/use-java
|
||
#!/bin/bash
|
||
case "$1" in
|
||
8) export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk ;;
|
||
21) export JAVA_HOME=/usr/lib/jvm/java-21-openjdk ;;
|
||
*) echo "Usage: source use-java [8|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 8: $(/usr/lib/jvm/java-1.8-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)"
|