前言
在Centos7阿里云服务器上使用docker搭建jenkins服务。
需要提前准备的条件
- Maven环境
- docker环境
- JDK环境(Centos7自带JDK环境)
一、docker拉取镜像
Jenkins有官方镜像,也有私人镜像,这里我们选择拉取中文版的Jenkins镜像。
docker pull jenkinszh/jenkins-zh
二、创建Jenkins挂载目录并授权权限
如果你对Docker比较熟悉,应该知道它的实现实际上是创造了一个独立的容器环境,Jenkins在这个容器内运行,那么如果我们想要对Jenkins进行配置,就需要进入到容器里选择文件进行配置。虽然我们可以使用docker exec -it 【容器id】 bash
命令进入容器目录进行配置,但是连简单的 vi命令都不能使用。
如果我们在启动镜像的时候指定挂载目录,那么在服务器本机与容器之间就可以创建一个映射。
所以我们在服务器上先创建一个jenkins工作目录, /var/jenkins_mount
,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。
mkdir -p /var/jenkins_mount
chmod 777 /var/jenkins_mount
三、创建并启动Jenkins容器
命令如下,别着急执行命令,记得改路径。
docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /root/apache-maven-3.6.3:/usr/local/maven -v /etc/localtime:/etc/localtime --name myjenkins jenkinszh/jenkins-zh
请注意看下面我们指定对应参数的意义。
-d 后台运行镜像
-p 10240:8080 意义: 将镜像的8080端口映射到服务器的10240端口。
-p 10241:50000 意义:将镜像的50000端口映射到服务器的10241端口
-v /var/jenkins_mount:/var/jenkins_mount 意义: /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /var/jenkins_mount目录
-v /etc/localtime:/etc/localtime 意义:让容器使用和服务器同样的时间设置。
-v /root/apache-maven-3.6.3:/usr/local/maven 意义:挂载本地maven,前面是服务器上的,后面是挂载到容器上的目录
–name myjenkins 意义:给容器起一个别名
然后使用docker在后台启动jenkins镜像,注意maven一定要挂载,不然后面在容器里找不到maven。如何挂载请看上面注释,路径也要注意,我是安装到了/root/apache-maven-3.6.3
,你们如果安装到别的地方,记得改路径。
这里我没有挂载jdk,是因为centos自带jdk,所以我可以在容器中使用自带的jdk 如果你们使用的是windows或者其他版本的操作系统,建议也挂载上jdk。
可以通过docker ps
看看jenkins是否启动,如果未启动使用docker ps -a
查询所有的容器,找到对应jenkins的容器id,使用docker rm [容器ID]
删除,再重新检查命令是否正确、端口等等问题,并启动镜像创建容器。
可以通过docker logs myjenkins
命令查看日志,可以看到Jenkins就是一个Spring项目。
进入容器,检查一下maven是否挂载成功,进入容器的命令是docker exec -it 【容器ID】 bash
,进入到我们刚才指定的Maven目录,也就是/usr/local/maven
,可以看到确实有maven。
四、配置Jenkins服务
启动好镜像我们就可以进行配置了,Jenkins是一个web服务,所以我们直接使用web端口访问即可。
由于我们上面docker配置的是10240端口,去访问10240端口即可,如果是云服务器,记得打开安全组的10240端口
需要注意的是,这里显示的是jenkins_home
路径,由于我设定的目录是jenkins_mounts
,故我的密码放置目录是/var/jenkins_mount
所以建议使用cd
和ls
命令一层一层进入密码目录
把找到的密码输入即可。
输入密码后,选择安装推荐的插件即可。
最后成功进入到jenkins中。
安装两个插件,一个是publish over ssh,一个是Maven Integration
安装插件完成后我们需要配置Maven环境和JDK环境。
点击全局配置后,配置maven为刚才挂载的maven路径,也就是/usr/local/maven
创建一个maven项目
创建项目后,选择配置项目
绑定git
写入Maven要执行的命令,clean install
指定多久检查一次git改变,若有改变则编译。
并且指定编译完成后的策略,我们是想编译完成后直接跑起来,这里使用SSH方式进行指定。
在配置好刚创建的Maven项目之后,我们立即构建即可
我们查看控制台输出,发现提示POM文件没有找到,是因为我还没有在git上创建一个Maven项目。
所以我们创建一个maven项目并且上传到git上即可。
之后我们每次提交项目到git,在构建编译后,将会自动上线部署。