近来闲着无事,于是就想在我的NAS上面装个Jenkins玩玩,然后再和各服务器之间通过Zerotier组个内网,就可以打通整个玩耍流程了。
于是乎,就开始了折腾之旅,整个过程比较费劲,因为我需要.NET Core 3.1
和 .NET 5
的开发环境,但是这两个版本官方已经停止支持了,所以只能自己手动安装。
问题的出现和解决
- dotnet-sdk 下载速度巨慢
解决方法:手动到SDK下载页面,选择linux版下载,然后复制下载链接过来
如:https://download.visualstudio.microsoft.com/download/pr/dd7d2255-c9c1-4c6f-b8ad-6e853d6bb574/c8e1b5f47bf17b317a84487491915178/dotnet-sdk-6.0.408-linux-x64.tar.gz
- 默认拉取镜像
jenkins/jenkins:lastest
版本不合适
在安装插件时,某些插件提示至少需要版本xxx,首页可以看到jenkins的版本不是最新版本
解决方法:指定镜像版本,推荐LTS长期支持版本,如jenkins/jenkins:2.387.3-lts-jdk11
- 构建镜像之后:在容器内打印
dotnet --info
提示缺少libicu
依赖
解决方法,安装它 apt-get update && apt-get install -y libicu-dev
- 镜像内部没有
sudo
、curl
、wget
等常用命令
解决方法:也是安装它 apt-get update && apt-get install -y wget curl sudo rsync
最终得到的 Dockerfile
FROM jenkins/jenkins:2.387.3-lts-jdk11
USER root
# Install libicu ...
RUN apt-get update && apt-get install -y wget curl sudo rsync \
&& apt-get install -y libicu-dev \
&& rm -rf /var/lib/apt/lists/*
# Install .NET 6 SDK
RUN curl -SL --output dotnet-sdk.tar.gz https://download.visualstudio.microsoft.com/download/pr/dd7d2255-c9c1-4c6f-b8ad-6e853d6bb574/c8e1b5f47bf17b317a84487491915178/dotnet-sdk-6.0.408-linux-x64.tar.gz \
&& mkdir -p /usr/share/dotnet \
&& tar -zxf dotnet-sdk.tar.gz -C /usr/share/dotnet \
&& ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
&& rm dotnet-sdk.tar.gz
# Install .NET Core 3.1 SDK
RUN curl -SL --output dotnet-sdk-3.1.tar.gz https://download.visualstudio.microsoft.com/download/pr/e89c4f00-5cbb-4810-897d-f5300165ee60/027ace0fdcfb834ae0a13469f0b1a4c8/dotnet-sdk-3.1.426-linux-x64.tar.gz \
&& mkdir -p /usr/share/dotnet \
&& tar -zxf dotnet-sdk-3.1.tar.gz -C /usr/share/dotnet \
&& ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet-sdk-3.1 \
&& rm dotnet-sdk-3.1.tar.gz
# Install .NET 5 SDK
RUN curl -SL --output dotnet-sdk-5.tar.gz https://download.visualstudio.microsoft.com/download/pr/904da7d0-ff02-49db-bd6b-5ea615cbdfc5/966690e36643662dcc65e3ca2423041e/dotnet-sdk-5.0.408-linux-x64.tar.gz \
&& mkdir -p /usr/share/dotnet \
&& tar -zxf dotnet-sdk-5.tar.gz -C /usr/share/dotnet \
&& ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet-sdk-5 \
&& rm dotnet-sdk-5.tar.gz
# Install Node.js
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash - && \
apt-get install -y nodejs
USER jenkins
启动容器
- 首先来到
Dockerfile
所在目录,执行镜像构建
docker build -t jenkins-with-dotnet-nodejs:lts .
- 等待构建结束,启动容器
docker run -d -p 宿主机端口:8080 --restart always --name jenkins -v 宿主机目录:/var/jenkins_home jenkins-with-dotnet-nodejs:lts
- 然后访问
http://宿主机IP:宿主机端口
,通过容器日志,可以拿到初始化密码,如果拿不到就进入容器内部到指定的目录下CV过来。
# 查看容器日志
docker logs jenkins
# 进入容器内部
docker exec -it jenkins /bin/bash
安装插件前的优化
总所周知,访问这些国外的网站,总会遇到速度贼慢的情况,一般情况下,我们需要使用国内的镜像加速。所以在安装插件之前,先给镜像加速搞好,可以提升安装体验。
打开前面挂载的宿主机目录,找到 hudson.model.UpdateCenter.xml
文件,把其中的url替换一下,比如使用清华大学的镜像加速。
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
</sites>
结束
安装过程中尝试了蛮多操作的,只不过想不起来了,反正折腾么,多试试多学学吧就。