Files
docker-files/gitea_runner_node/Dockerfile
2026-02-12 12:07:19 +08:00

39 lines
2.3 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Gitea Action Runner Node.js Image
# 基于 gitea_runner_base 添加多版本 Node.js 和包管理器
FROM timi/gitea_runner_base:latest
LABEL maintainer="www.imyeyu.com"
LABEL description="Gitea Action Runner with Node.js 18/20/22 and multiple package managers"
# Node.js 安装目录
ENV NODE_BASE=/usr/local/node
# 安装 Node.js 多版本环境Alpine musl 版本)
RUN set -ex \
&& apk add --no-cache libstdc++ \
&& mkdir -p ${NODE_BASE}/versions \
# 下载并安装 Node.js 18 (musl)
&& wget -q https://unofficial-builds.nodejs.org/download/release/v18.20.8/node-v18.20.8-linux-x64-musl.tar.xz -O /tmp/node18.tar.xz \
&& tar -xJf /tmp/node18.tar.xz -C ${NODE_BASE}/versions \
&& mv ${NODE_BASE}/versions/node-v18.20.8-linux-x64-musl ${NODE_BASE}/versions/18 \
# 下载并安装 Node.js 20 (musl)
&& wget -q https://unofficial-builds.nodejs.org/download/release/v20.20.0/node-v20.20.0-linux-x64-musl.tar.xz -O /tmp/node20.tar.xz \
&& tar -xJf /tmp/node20.tar.xz -C ${NODE_BASE}/versions \
&& mv ${NODE_BASE}/versions/node-v20.20.0-linux-x64-musl ${NODE_BASE}/versions/20 \
# 下载并安装 Node.js 22 (musl)
&& wget -q https://unofficial-builds.nodejs.org/download/release/v22.12.0/node-v22.12.0-linux-x64-musl.tar.xz -O /tmp/node22.tar.xz \
&& tar -xJf /tmp/node22.tar.xz -C ${NODE_BASE}/versions \
&& mv ${NODE_BASE}/versions/node-v22.12.0-linux-x64-musl ${NODE_BASE}/versions/22 \
# 设置默认版本为 20
&& ln -sf ${NODE_BASE}/versions/20/bin/node /usr/local/bin/node \
&& ln -sf ${NODE_BASE}/versions/20/bin/npm /usr/local/bin/npm \
&& ln -sf ${NODE_BASE}/versions/20/bin/npx /usr/local/bin/npx \
# 安装全局包管理器
&& npm install -g yarn pnpm \
# 创建版本切换脚本
&& printf '#!/bin/bash\ncase "$1" in\n 18|20|22)\n export PATH="${NODE_BASE}/versions/$1/bin:${PATH}"\n ln -sf ${NODE_BASE}/versions/$1/bin/node /usr/local/bin/node\n ln -sf ${NODE_BASE}/versions/$1/bin/npm /usr/local/bin/npm\n ln -sf ${NODE_BASE}/versions/$1/bin/npx /usr/local/bin/npx\n echo "Switched to Node.js $1: $(node -v)"\n ;;\n *)\n echo "Usage: use-node [18|20|22]"\n exit 1\n ;;\nesac\n' > /usr/local/bin/use-node \
&& chmod +x /usr/local/bin/use-node \
# 清理临时文件
&& rm -f /tmp/node*.tar.xz