diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9daf815 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/AGENTS.md +/CLAUDE.md +/.claude diff --git a/README.md b/README.md index fe5ce38..ac54713 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,57 @@ # docker-files -镜像 Dockerfile \ No newline at end of file +Gitea Action Runner Docker 镜像集合 + +## 镜像列表 + +### gitea_runner_base + +基于 `gitea/act_runner` 的基础镜像,包含常用构建工具: + +- 版本控制: git, git-lfs +- 网络工具: curl, wget, openssl +- 压缩工具: tar, gzip, bzip2, xz, zip, unzip +- 构建工具: make, bash, GNU 工具链 +- 其他: jq, tree + +```bash +docker build -t gitea_runner_base ./gitea_runner_base +``` + +### gitea_runner_java + +基于 `gitea_runner_base` 的 Java 开发镜像,包含: + +- JDK 7 (Azul Zulu) +- JDK 8, 11, 17, 21 (OpenJDK) +- Maven 3.9.9 + +```bash +docker build -t gitea_runner_java ./gitea_runner_java +``` + +**切换 JDK 版本:** + +```bash +# 在容器内或 CI 脚本中 +source use-java 8 # 切换到 JDK 8 +source use-java 17 # 切换到 JDK 17 +``` + +**直接指定 JAVA_HOME:** + +```yaml +# Gitea Action workflow 示例 +env: + JAVA_HOME: /usr/lib/jvm/java-11-openjdk +``` + +## 构建顺序 + +```bash +# 1. 先构建基础镜像 +docker build -t gitea_runner_base ./gitea_runner_base + +# 2. 再构建语言环境镜像 +docker build -t gitea_runner_java ./gitea_runner_java +``` \ No newline at end of file diff --git a/gitea_runner_base/Dockerfile b/gitea_runner_base/Dockerfile new file mode 100644 index 0000000..88bb415 --- /dev/null +++ b/gitea_runner_base/Dockerfile @@ -0,0 +1,38 @@ +# Gitea Action Runner Base Image +# 基于 gitea/act_runner 添加常用构建工具,不含具体语言环境 + +FROM gitea/act_runner:latest + +LABEL maintainer="www.imyeyu.com" +LABEL description="Gitea Action Runner with basic build tools" + +# 安装基本构建工具 +# act_runner 基于 Alpine Linux +RUN apk update && apk add --no-cache \ + # 版本控制 + git \ + git-lfs \ + # 网络工具 + curl \ + wget \ + ca-certificates \ + openssl \ + # 压缩/解压工具 + tar \ + gzip \ + bzip2 \ + xz \ + zip \ + unzip \ + # 基本构建工具 + make \ + bash \ + coreutils \ + findutils \ + grep \ + sed \ + gawk \ + # 其他常用工具 + jq \ + tree \ + && rm -rf /var/cache/apk/* diff --git a/gitea_runner_java/Dockerfile b/gitea_runner_java/Dockerfile new file mode 100644 index 0000000..b018a79 --- /dev/null +++ b/gitea_runner_java/Dockerfile @@ -0,0 +1,65 @@ +# 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 > /usr/local/bin/use-java << 'EOF' +#!/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)"