【随手记录】docker部署jenkins,集成maven、spring项目
1、下载镜像文件到服务器
docker pull jenkins/jenkins:lts-jdk17
或离线导入镜像:
docker load -i jenkins-lts-jdk17
检查镜像是否导入:
docker images|grep jenkins jenkins/jenkins lts-jdk17 7a7add0bf3da 2 weeks ago 470MB
2024年6月以后国内很多大型的Docker镜像站都停止了服务或改为内部使用,
具体已经停止服务的以及可用的镜像列表可以在这里找到:
https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6
2、创建文件夹/var/jenkins_home,用来存放jenkins的工作空间数据(路径、文件夹名称可以根据现场情况修改)
cd /var && mkdir jenkins_home
3、启动容器
使用docker run命令启动jenkins容器:
docker run -d -p 8080:8080 -p 50000:50000 -v /home/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /home/apache-maven-3.9.9:/var/apache-maven-3.9.9 -v /home/maven_repository:/root/.m2/repository -v /home/jdk1.8.0_151:/var/jdk1.8.0_151 --restart=on-failure -u 0 --name jenkins jenkins/jenkins:lts-jdk17
注意:
- 根据实际情况调整挂载目录、开放端口:
- /etc/localtime为了让容器内部时间和宿主服务器保持一致
- /usr/bin/docker为了让容器内部可以使用docker命令
- /var/run/docker.sock 为了让容器内的Docker客户端能够与宿主机的 Docker 守护进程通信
- -u 0为了确保容器内的 Jenkins 有足够的权限执行需要的操作,以 root 用户(UID 0)身份运行容器。
- /var/jenkins_home 为jenkins工作空间目录,备份该目录数据即可实现jenkins数据备份迁移
- /home/apache-maven-3.9.9、/home/maven_repository为挂载的maven和maven类库
- /home/jdk1.8.0_151该镜像内自带jdk17环境,如果想更改jdk版本,可以通过-v挂载jdk部署包并在系统里配置java_home路径
4、解锁jenkins
第一次打开jenkins系统需要配置密码,从/var/jenkins_home/secrets/initialAdminPassword
目录获取:
5、配置插件
新手建议安装推荐的插件,后续根据需求再调整插件
6、创建管理员账户
账户创建完成之后,步骤四的initialAdminPassword账户即删除,无效!
7、部署完成
8、补充所需插件
需要用到maven、svn等插件,具体插件清单如下:
- Subversion --从SVN中获取代码
- Maven Integration -- 编译项目
- Docker plugin -- 用于节点管事中的 Docker 维护
- docker-build-step -- 用于 Build/Publish Docker Image
- SSH -- 用于远程执行服务器上的命令
9、配置docker服务
如果是jenkins本地docker无需额外配置,如果是远程服务器docker,可以通过ssh插件执行docker命令或者通过docker cloud插件调度远端docker
10、新增maven项目
新增maven项目之前,需要配置好maven,再系统管理-全局工具配置里设置maven工具信息:
然后点击新增Item,选择”构建一个maven项目“,正式开始项目配置:
配置svn源码信息:
配置触发器,什么条件下触发执行,定时器采用linux的cron定时规则:
编译配置:
执行脚本,本地打docker镜像
11、测试执行,完成