2021-01-31
NAS 搭建起来之后,接下来想开发一些后端服务运行在上面。对于后端应用来说,持续集成是一个很麻烦的东西,需要由自动化工具来解决。因此自然想到了 Jenkins,本文介绍如何在 OpenMediaVault 上通过 Docker 部署 Jenkins。
社区中有多个 Jenkins 镜像可供选择。最终选择了下载量排名第二的 jenkins/jenkins
。
之所以没选排名第一的 jenkins
镜像,是因为这个镜像是一个废弃镜像,已经两年多没有维护了。
我选择 jenkins/jenkins
镜像,GitHub 首页位于这里。
最简单的运行方法是:
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
Jenkins 数据默认会存在 /var/jenkins_home
下,但是不会持久化。
下面命令把数据保存在磁盘上:
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
在文档中还提到了数据备份,即只要备份 jenkins_home
所对应的目录即可。
好,理论知识学完了,下面开始实践。
首先 ssh 登录到 NAS,进行镜像下载。
docker pull jenkins/jenkins
接下来去 NAS 的 SSD 硬盘创建 jenkins_home
目录:
/srv/dev-disk-by-uuid-1b9c0013-e50e-4ba5-9f16-2e8be704b742/ssd3_bk/jenkins_home
创建容器:
docker run -d --name jenkins -p 8081:8080 -p 50000:50000 -v /srv/dev-disk-by-uuid-1b9c0013-e50e-4ba5-9f16-2e8be704b742/ssd3_bk/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
遇到了一个问题,是容器没有挂载目录的权限。根据 Permission denied - /var/jenkins_home/copy_reference_file.log #177,解决方法是修改挂载目录的权限:
sudo chown 1000 volume_dir
之后重启容器就能跑起来了。
解锁 Jenkins:
初始密码存在图中目录下,直接去 SSD 中寻找。
安装插件,选择推荐的就行,后续需要什么自己再装:
插件安装过程中:
创建完管理员账号后,进入 Jenkins 首页:
在【插件管理】中我遇到一个问题,即可选插件为空,刷不出来:
还是网络的问题,有三种解决方法,一种是解决网络问题,一种是更换为国内源,一种是手动上传插件。
由于我对 Jenkins 插件暂时需求不强烈,先用手动上传临时对付一段时间。
在 NAS 上部署 Jenkins 完成了,下一步思考的是如何将它真正用起来。