docker 安装Jenkins
2021-12-15 本文已影响0人
樱花舞
1、docker安装Jenkins
在安装好docker之后,分别执行下面命令安装Jenkins:
#下载Jenkins镜像
docker pull jenkins/jenkins
#启动Jenkins
docker run -d -p 8080:8080 --name jenkins -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /root/jenkins:/var/jenkins_home jenkins/jenkins
注意:
-v /usr/bin/docker:/usr/bin/docker
-v /var/run/docker.sock:/var/run/docker.sock
这两个挂载不要改变,而且最好不要漏掉,不然可能会出现各种问题,(一开始我就是没加这两个,令人头秃)
-v /root/jenkins:/var/jenkins_home jenkins/jenkins
这个挂载是Jenkins的用户、构建项目的文件都是在这里,就算停掉或重启Jenkins这些都存在,以免数据丢失,/root/jenkins这路径是自定义的,改为自己的路径即可。
若Jenkins无法启动或Jenkins需要root用户,可以用root用户启动:-u root
docker run -d -p 8080:8080 --name jenkins -u root -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /root/jenkins:/var/jenkins_home jenkins/jenkins
2、Jenkins配置
输入地址:ip:8080访问Jenkins,刚开始进入会等一段时间初始化,然后输入管理员密码,密码在挂载的目录下:
#用自己定义的挂载目录
cat /root/jenkins/secrets/initialAdminPassword
![](https://img.haomeiwen.com/i8428991/441cfed1261fe373.png)
接下来的配置都可以先跳过,后续再登录时管理员的用户名默认是:admin,然后安装插件,这里选择推荐的即可,等插件安装完成。
![](https://img.haomeiwen.com/i8428991/4c9baa31fb9985fc.png)
3、构建发布spring boot的docker应用例子
构建发布一个spring boot的docker应用例子,先安装maven插件。
![](https://img.haomeiwen.com/i8428991/de30eb937a72d2e7.png)
安装完后,然后全局配置maven插件,其他没用到的插件不用配置:
![](https://img.haomeiwen.com/i8428991/f57c1e155feb5c3d.png)
新建任务,选择构建maven项目,源码管理选择git,输入自己源码地址,以及用户名和密码。然后填写构建命令,其中-P dev是引用dev.yml的配置,结合pom文件的<profiles>使用。
![](https://img.haomeiwen.com/i8428991/41bb591c4d279923.png)
接下来就是重点,填写Jenkins完成打包jar后要执行的脚本,注意此位置是处于项目的根目录下,如/jenkins/workspace/app-test:
![](https://img.haomeiwen.com/i8428991/56941ca069f78b67.png)
# 此位置是在Jenkins的workspace目录下,先在服务器创建/app/app-test文件夹
path=../app/app-test
# 把dockerfile复制到/app/app-test文件夹
cp Dockerfile ${path}
# 把jar 包复制到/app/app-test文件夹
cp target/AppTest.jar ${path}
# 进入到/app/app-test文件夹
cd ${path}
# 我这里是把镜像和容器名都相同
app="app-test"
imagesid=`docker images|grep -i ${app}|awk '{print $3}'`
dockerid=`docker ps -a|grep -i ${app}|awk '{print $1}' `
#停止、删除容器
if [ -n "$dockerid" ] ;then
docker stop $dockerid
docker rm -f $dockerid
else
echo 'dockerid is null'
fi
#删除镜像
if [ ! -n "$imagesid" ];then
echo $imagesid "is null"
else
docker rmi $imagesid -f
fi
#构建新镜像
docker build -t ${app} .
#启动项目
docker run -d -p 8091:8091 --name ${app} ${app}
查看日志:
docker logs app-test
如果项目日志是输出到文件,可以挂载日志文件,方便保存和查看,在最后启动项目的shell脚本改为下面的,其中/xxx/xxx是服务器目录,/sss是代码配置的日志文件的相对路径,改为自己的即可。
#启动项目
docker run -d -p 8091:8091 -v /xxx/xxx:/sss --name ${app} ${app}