Loading... 近来闲着无事,于是就想在我的NAS上面装个Jenkins玩玩,然后再和各服务器之间通过Zerotier组个内网,就可以打通整个玩耍流程了。 于是乎,就开始了折腾之旅,整个过程比较费劲,因为我需要`.NET Core 3.1` 和 `.NET 5` 的开发环境,但是这两个版本官方已经停止支持了,所以只能自己手动安装。 ## 问题的出现和解决 1. 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 2. 默认拉取镜像 `jenkins/jenkins:lastest` 版本不合适 > 在安装插件时,某些插件提示至少需要版本xxx,首页可以看到jenkins的版本不是最新版本 > 解决方法:指定镜像版本,推荐LTS长期支持版本,如 `jenkins/jenkins:2.387.3-lts-jdk11` 3. 构建镜像之后:在容器内打印`dotnet --info`提示缺少`libicu`依赖 > 解决方法,安装它 ` apt-get update && apt-get install -y libicu-dev` 4. 镜像内部没有`sudo`、`curl`、`wget` 等常用命令 > 解决方法:也是安装它 `apt-get update && apt-get install -y wget curl sudo rsync` ## 最终得到的 Dockerfile ```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 ``` ## 启动容器 1. 首先来到`Dockerfile`所在目录,执行镜像构建 ```shell docker build -t jenkins-with-dotnet-nodejs:lts . ``` 2. 等待构建结束,启动容器 ```shell docker run -d -p 宿主机端口:8080 --restart always --name jenkins -v 宿主机目录:/var/jenkins_home jenkins-with-dotnet-nodejs:lts ``` 3. 然后访问 `http://宿主机IP:宿主机端口`,通过容器日志,可以拿到初始化密码,如果拿不到就进入容器内部到指定的目录下CV过来。 ```shell # 查看容器日志 docker logs jenkins # 进入容器内部 docker exec -it jenkins /bin/bash ``` ## 安装插件前的优化 总所周知,访问这些国外的网站,总会遇到速度贼慢的情况,一般情况下,我们需要使用国内的镜像加速。所以在安装插件之前,先给镜像加速搞好,可以提升安装体验。 打开前面挂载的宿主机目录,找到 `hudson.model.UpdateCenter.xml`文件,把其中的url替换一下,比如使用清华大学的镜像加速。 ```xml <?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> ``` ## 结束 安装过程中尝试了蛮多操作的,只不过想不起来了,反正折腾么,多试试多学学吧就。 最后修改:2023 年 05 月 11 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏