Jenkins 依赖包:NET3.1-9.0 + Jenkins + npm + cnpm + yarn + nvm
1.2K
记录每次修订的内容,方便追溯。
最近更新时间: 2026-02-05
构建文件
# 基础镜像
FROM jenkins/jenkins:lts-jdk21
LABEL maintainer="nine <[email protected]>"
# 切换到root用户(全程用root安装,避免权限问题)
USER root
# 显示系统信息
RUN uname -a && cat /etc/*release
# 安装基础依赖
RUN echo "deb [trusted=yes] http://archive.debian.org/debian buster main contrib non-free" > /etc/apt/sources.list.d/buster.list \
&& echo "deb [trusted=yes] http://archive.debian.org/debian bullseye main contrib non-free" > /etc/apt/sources.list.d/bullseye.list \
&& echo "deb [trusted=yes] http://archive.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list.d/buster.list \
&& curl -fsSL https://ftp-master.debian.org/keys/archive-key-10.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/buster.gpg \
&& curl -fsSL https://ftp-master.debian.org/keys/archive-key-11.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/bullseye.gpg \
&& apt-get -o Acquire::Check-Valid-Until=false update \
&& apt-get install -y \
curl \
libunwind8 \
gettext \
apt-transport-https \
software-properties-common \
openjdk-11-jdk \
libssl1.1 \
libicu67 \
git \
bash \
&& rm -rf /var/lib/apt/lists/*
# 配置.NET源并安装
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg \
&& mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg \
&& sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-buster-prod buster main" > /etc/apt/sources.list.d/dotnetdev.list' \
&& apt-get update && apt-get install -y dotnet-sdk-3.1 dotnet-sdk-5.0 \
&& rm -rf /var/lib/apt/lists/* \
&& sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-bullseye-prod bullseye main" > /etc/apt/sources.list.d/dotnetdev.list' \
&& apt-get update && apt-get install -y dotnet-sdk-6.0 dotnet-sdk-7.0 dotnet-sdk-8.0 dotnet-sdk-9.0 \
&& rm -rf /var/lib/apt/lists/*
# 定义NVM路径(用root安装,路径设为全局可访问)
ENV NVM_DIR="/usr/local/nvm"
ENV NODE_VERSION="20.10.0"
# 用root安装NVM,确保文件持久化
RUN echo "用root安装NVM到全局路径: $NVM_DIR" \
&& mkdir -p "$NVM_DIR" \
&& chmod 777 "$NVM_DIR" \
&& curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | NVM_DIR="$NVM_DIR" bash \
&& echo "验证nvm.sh是否存在" \
&& test -f "$NVM_DIR/nvm.sh" || (echo "NVM安装失败:$NVM_DIR/nvm.sh不存在" && exit 1) \
&& echo "加载NVM并安装Node" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install "$NODE_VERSION" \
&& nvm alias default "$NODE_VERSION" \
&& nvm use default \
&& echo "Node安装完成: $(node -v)" \
&& chmod -R 777 "$NVM_DIR" # 递归授权,确保jenkins用户可访问
# 配置环境变量(全局可见)
ENV NODE_PATH="$NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules"
ENV PATH="$NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH"
# 切换回jenkins用户
USER jenkins
# 安装前端工具(此时nvm.sh已在全局路径,权限开放)
RUN echo "加载NVM环境(全局路径)" \
&& . "$NVM_DIR/nvm.sh" \
&& echo "当前Node版本: $(node -v)" \
&& npm install -g cnpm yarn \
&& yarn config set registry https://registry.npm.taobao.org
# 验证所有工具
RUN . "$NVM_DIR/nvm.sh" \
&& dotnet --list-sdks \
&& echo "Node: $(node -v)" \
&& echo "npm: $(npm -v)" \
&& echo "cnpm: $(cnpm -v)" \
&& echo "yarn: $(yarn --version)"
WORKDIR /var/jenkins_home
最近更新时间: 2025-07-29 重构更新:包含了net 3.1 5 6 7 8 9 yarn npm nvm cnpm
Step 14/15 : RUN . "$NVM_DIR/nvm.sh" && dotnet --list-sdks && echo "Node: $(node -v)" && echo "npm: $(npm -v)" && echo "cnpm: $(cnpm -v)" && echo "yarn: $(yarn --version)"
---> Running in c22f02d41b3b
3.1.426 [/usr/share/dotnet/sdk]
5.0.408 [/usr/share/dotnet/sdk]
6.0.428 [/usr/share/dotnet/sdk]
7.0.410 [/usr/share/dotnet/sdk]
8.0.405 [/usr/share/dotnet/sdk]
9.0.102 [/usr/share/dotnet/sdk]
Node: v20.10.0
npm: 10.2.3
cnpm: [email protected] (/usr/local/nvm/versions/node/v20.10.0/lib/node_modules/cnpm/lib/parse_argv.js)
[email protected] (/usr/local/nvm/versions/node/v20.10.0/lib/node_modules/cnpm/node_modules/npm/index.js)
[email protected] (/usr/local/nvm/versions/node/v20.10.0/bin/node)
[email protected] (/usr/local/nvm/versions/node/v20.10.0/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)
prefix=/usr/local/nvm/versions/node/v20.10.0
linux x64 6.1.27
registry=https://registry.npmmirror.com
yarn: 1.22.22
---> Removed intermediate container c22f02d41b3b
---> bb5e9cf3fefb
Step 15/15 : WORKDIR /var/jenkins_home
---> Running in 92b0a27ae23b
---> Removed intermediate container 92b0a27ae23b
---> e8c9b45234ad
Successfully built e8c9b45234ad
Successfully tagged jamnine/jenkins:latest
# 基础镜像
FROM jenkins/jenkins:lts-jdk11
LABEL maintainer="nine <[email protected]>"
# 切换到root用户(全程用root安装,避免权限问题)
USER root
# 显示系统信息
RUN uname -a && cat /etc/*release
# 安装基础依赖
RUN echo "deb [trusted=yes] http://archive.debian.org/debian buster main contrib non-free" > /etc/apt/sources.list.d/buster.list \
&& echo "deb [trusted=yes] http://archive.debian.org/debian bullseye main contrib non-free" > /etc/apt/sources.list.d/bullseye.list \
&& echo "deb [trusted=yes] http://archive.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list.d/buster.list \
&& curl -fsSL https://ftp-master.debian.org/keys/archive-key-10.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/buster.gpg \
&& curl -fsSL https://ftp-master.debian.org/keys/archive-key-11.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/bullseye.gpg \
&& apt-get -o Acquire::Check-Valid-Until=false update \
&& apt-get install -y \
curl \
libunwind8 \
gettext \
apt-transport-https \
software-properties-common \
openjdk-11-jdk \
libssl1.1 \
libicu67 \
git \
bash \
&& rm -rf /var/lib/apt/lists/*
# 配置.NET源并安装
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg \
&& mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg \
&& sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-buster-prod buster main" > /etc/apt/sources.list.d/dotnetdev.list' \
&& apt-get update && apt-get install -y dotnet-sdk-3.1 dotnet-sdk-5.0 \
&& rm -rf /var/lib/apt/lists/* \
&& sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-bullseye-prod bullseye main" > /etc/apt/sources.list.d/dotnetdev.list' \
&& apt-get update && apt-get install -y dotnet-sdk-6.0 dotnet-sdk-7.0 dotnet-sdk-8.0 dotnet-sdk-9.0 \
&& rm -rf /var/lib/apt/lists/*
# 定义NVM路径(用root安装,路径设为全局可访问)
ENV NVM_DIR="/usr/local/nvm"
ENV NODE_VERSION="20.10.0"
# 用root安装NVM,确保文件持久化
RUN echo "用root安装NVM到全局路径: $NVM_DIR" \
&& mkdir -p "$NVM_DIR" \
&& chmod 777 "$NVM_DIR" \
&& curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | NVM_DIR="$NVM_DIR" bash \
&& echo "验证nvm.sh是否存在" \
&& test -f "$NVM_DIR/nvm.sh" || (echo "NVM安装失败:$NVM_DIR/nvm.sh不存在" && exit 1) \
&& echo "加载NVM并安装Node" \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install "$NODE_VERSION" \
&& nvm alias default "$NODE_VERSION" \
&& nvm use default \
&& echo "Node安装完成: $(node -v)" \
&& chmod -R 777 "$NVM_DIR" # 递归授权,确保jenkins用户可访问
# 配置环境变量(全局可见)
ENV NODE_PATH="$NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules"
ENV PATH="$NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH"
# 切换回jenkins用户
USER jenkins
# 安装前端工具(此时nvm.sh已在全局路径,权限开放)
RUN echo "加载NVM环境(全局路径)" \
&& . "$NVM_DIR/nvm.sh" \
&& echo "当前Node版本: $(node -v)" \
&& npm install -g cnpm yarn \
&& yarn config set registry https://registry.npm.taobao.org
# 验证所有工具
RUN . "$NVM_DIR/nvm.sh" \
&& dotnet --list-sdks \
&& echo "Node: $(node -v)" \
&& echo "npm: $(npm -v)" \
&& echo "cnpm: $(cnpm -v)" \
&& echo "yarn: $(yarn --version)"
WORKDIR /var/jenkins_home
最近更新时间: 2024-07-23
Net 7.0/8.0 SDK 编译Web API项目最近更新时间: 2022-03-22
增加Net 6.0 SDK 编译Web API项目
其他组件常规升级
根据SDK不同划分几个标签
| 版本号 | 标签 | 作者 | 不同组件 | 发布日期 |
| --- | --- | --- | --- | --- |
| 1.2.0 | latest | Jamnine(何拾玖) | Core SKD 3.1/5/6 | 2022-03-23 |
| 1.2.0 | v1.2.0-net-3.1-5-6 | Jamnine(何拾玖) | Core SKD 3.1/5/6 | 2022-03-23 |
| 1.2.0 | v1.2.0-net-6.0 | Jamnine(何拾玖) | Core SKD 6 | 2022-03-23 |
| 1.2.0 | v1.2.0-net-5.0 | Jamnine(何拾玖) | Core SKD 5 | 2022-03-23 |
| 1.2.0 | v1.2.0-net-core-3.1 | Jamnine(何拾玖) | Core SKD 3.1 | 2022-03-22 |
注:latest等同 tag:v1.2.0-net-3.1-5-6
共同组件
| 1.2.0共同组件 | Jenkins 2.339 | Core SKD 3.1/5/6 | NodeJs 14.19.1 | Git 2.30.2npm 8.5.5 | cnpm 7.1.1 | yarn 1.22.18 | linux x64 3.10.0-957.21.3.el7.x86_64 |
| --- | --- |
增加yarn 编译前端项目使用
添加Git 拉取代码
增加Net 5.0 SDK 编译Web API项目
其他组件常规升级
| 版本号 | 标签 | 作者 | 不同组件 | 发布日期 |
| --- | --- | --- | --- | --- |
| 1.1.0 | v1.1.0-net-3.1-5 | Jamnine(何拾玖) | Core SKD 3.1/5 | 2021-05-05 |
| 1.1 | v1.1.0-net-5 | Jamnine(何拾玖) | Core SKD 5 | 2021-05-05 |
| 1.1 | v1.1.0-net-3.1 | Jamnine(何拾玖) | Core SKD 3.1 | 2021-05-05 |
共同组件
| 1.1共同组件 | Jenkins 2.257 | Core SKD 3.1/5 | NodeJs 14.16.1 | Git 2.11.0npm 7.11.1 | cnpm 6.2.0 | yarn 1.22.10 | linux x64 3.10.0-1127.19.1.el7.x86_64 |
| --- | --- |
制作第一个容器
包含Jenkins 2.266 Core SKD 3.1 NodeJs 14.15.0 Git 2.11.0 npm 6.14.8 cnpm 6.1.1 linux linux x64 3.10.0-957.21.3.el7.x86_64
CICD初体验,编译Web API Core版本,Vue 2.x 项目
| 版本号 | 标签 | 作者 | 不同组件 | 发布日期 |
| --- | --- | --- | --- | --- |
| 1.0.0 | v1.0.0-net-core-3.1 | Jamnine(何拾玖) | Core SKD 3.1 | 2020-11-11 |
共同组件
| 1.0.0共同组件 | Jenkins 2.266 | Core SKD 3.1 | NodeJs 14.15.0 | Git 2.11.0npm 6.14.8 | cnpm 6.1.1 | yarn 1.22.10 | linux x64 3.10.0-957.21.3.el7.x86_64 |
| --- | --- |
FROM jenkins/jenkins
# 说明该镜像的制作者和联系方式
MAINTAINER nine [email protected]
# Switch to root to install .NET Core SDK
USER root
# Show distro information!
RUN uname -a && cat /etc/*release
# Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install dependency for .NET Core 3.1 / 5 / 6
RUN apt-get update
RUN apt-get install -y curl libunwind8 gettext apt-transport-https
# Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install microsoft.qpg
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'
# Install the .NET Core framework Choose one Because I need several versions here, I installed three SDKs
RUN apt-get update
RUN apt-get install -y dotnet-sdk-3.1
RUN apt-get install -y dotnet-sdk-5.0
RUN apt-get install -y dotnet-sdk-6.0
# Install the npm
RUN apt-get install -y curl \
&& curl -sL https://deb.nodesource.com/setup_14.x | bash - \
&& apt-get install -y nodejs \
&& curl -L https://www.npmjs.com/install.sh | sh
# Install cnpm
RUN npm install cnpm -g
# Install yarn
RUN npm install -g yarn
RUN npm -v
RUN cnpm -v
RUN yarn --version
# Switch back to the jenkins user.
USER jenkins
# 进入home目录(假设home目录为空)
$ cd /home
# 创建一个dockerfile文件,用于创建自己的Jenkins容器
$ touch Dockerfile
# 编辑文件,vi、vim熟练的或者linux数量的直接进行操作,
# 本人不才,我用finalshell直接粘贴过去的,反正实现把上面的命令复制过去就行
$ vi Dockerfile
# 在jenkinsdockerfile目录下进行,确认是否在此目录,enter 创建容器
# 不指定文件构建镜像,此时规定Dockerfile的名称一定是Dockerfile,其他名字无法构建容器,或者使用指定文件构建镜像
$ docker build -t jenkinsdockerfile .
# 指定文件构建镜像 -t 镜像名称 jamnine/jenkins -f 指定文件生成镜像
$ docker build -t jamnine/jenkins -f /home/JenkinsDockerfile .
----------漫长等待.....大概十五分钟吧,以下这段为实例示例----------
[root@nine home]# docker build -t jenkinsdockerfile .
Sending build context to Docker daemon 16.9kB
Step 1/20 : FROM jenkins/jenkins
latest: Pulling from jenkins/jenkins
e4d61adff207: Pull complete
eacef06daf30: Pull complete
ca581b0141a3: Pull complete
d872c65909bb: Pull complete
bcce550e05a9: Pull complete
3461f061a833: Pull complete
3b6f8a58a68d: Pull complete
6d47f55855ba: Pull complete
baa80a92c8e4: Pull complete
39889d888af7: Pull complete
18b5e0e36b4c: Pull complete
a53e22d026ad: Pull complete
a281963da5b5: Pull complete
2366689c95a7: Pull complete
27cbe8a0f233: Pull complete
fffccee1c284: Pull complete
a6afec98241f: Pull complete
Digest: sha256:a5215b81a7f6e111ed6625b342521145e24c232891615be29ce3a251a631feac
Status: Downloaded newer image for jenkins/jenkins:latest
---> f7d565ddb272
Step 2/20 : MAINTAINER nine [email protected]
---> [Warning] IPv4 forwarding is disabled. Networking will not work.
---> Running in 47cecef5c92c
Removing intermediate container 47cecef5c92c
---> 13dd258b38bc
Step 3/20 : USER root
..........后续省略..........
----------容器创建---结束------------------------------
# 查看创建好的镜像
docker images
Content type
Image
Digest
sha256:e3a8fd37e…
Size
1.7 GB
Last updated
9 months ago
docker pull jamnine/jenkins