jenkins 共用宿主机中的docker自动化部署
创始人
2024-04-12 10:07:06

目录

第一节 jenkins 共用宿主机中的docker自动化部署

1.docker命令安装启动jenkins

2.查询jenkins内是否可以执行宿主机中的docker

第二节.jenkins 配置自动化部署

1.界面配置

1.配置mave

2.配置gitee

第三节 创建springboot多模块项目

 1.相关配置

1.pom

 2.编写dockerfile文件

3.项目上传到gitee

第四节 jenkins部署项目相关配置

第五节 测试启动

1.项目发布构建

2.查看宿主机进程

3.查看jenkins容器进程

 


第一节 jenkins 共用宿主机中的docker自动化部署

1.docker命令安装启动jenkins

 mkdir 挂载文件
##############################################################################################################################
## cd Users/jiajie/softmkdir jenkins## 上传maven文件到 jenkins 目录下
## 宿主机安装的docker.sock文件 var/run/docker.sock
##############################################################################################################################启动命令
##############################################################################################################################
docker run -u root -m 1024m --name jenkins 
-p 9998:8080 -p 50000:50000 --privileged 
-v /var/run/docker.sock:/var/run/docker.sock 
-v $(which docker):/bin/docker 
-v /Users/jiajie/soft/jenkins:/var/jenkins_home 
-d jenkins/jenkins:lts#以root用户运行---否则会报无权限
参数说明:
(1) -v /var/run/docker.sock:/var/run/docker.sock:容器中的进程通过它与Docker守护进程进行通信
(2) -v /usr/bin/docker:/usr/bin/docker:将宿主机的docker命令挂载到容器中。
/usr/bin.docker为docker命令所在具体位置,可以通过which docker指令获取。或者挂载时使用-v $(which docker):/usr/bin/docker
(3) -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7:ibltdl.so.7是Docker命令执行所依赖的函数库,容器中library的默认目录是/usr/lib/x86_64-linux-gnu/,把宿主机的libltdl.so.7函数库挂载到该目录即可。
可以通过whereis libltdl.so.7命令查看具体位置
centos7中该文件路径为/usr/lib64/libltdl.so.7
ubuntu中该文件路径为/usr/lib/x86_64-linux-gnu/libltdl.so.7

 

2.查询jenkins内是否可以执行宿主机中的docker

 

进入容器 docker exec -it bae630c41276 /bin/bash
执行 docker ps 
正常使用 宿主机docker

 

第二节.jenkins 配置自动化部署

1.界面配置

访问http://localhost:9998/login?from=%2F

#查看密码宿主机挂载目录下 /Users/jiajie/soft/jenkins/secrets/initialAdminPassword也可以在/var/jenkins_home/secrets/initialAdminPassword这个文件中查看到管理员密码

 

 

 

 

 

1.配置mave

M2_HOME
/var/jenkins_home/apache-maven-3.6.1
PATH+EXTRA
$M2_HOME/bin

 

2.配置gitee

 

 

 

 

 

 

第三节 创建springboot多模块项目

 1.相关配置

1.pom

#####  需要加上 spring-boot-maven-plugin
########否则打包会报 no main manifest attribute, in app.jar
micro-gatewayorg.springframework.bootspring-boot-maven-pluginrepackagetruecom.micro.microgateway.MicroGatewayApplicationorg.apache.maven.pluginsmaven-surefire-plugintrue

 2.编写dockerfile文件

FROM openjdk:8-jdk-alpine
MAINTAINER heshuai <2460983732@qq.com.com>
##镜像源
RUN echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \&& echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories \&& apk update upgrade \&& apk add --no-cache openssh  vim \&& apk add --no-cache procps unzip curl bash tzdata \&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone
RUN mkdir /data
RUN mkdir /micro-gateway
RUN mkdir /data/log
WORKDIR /micro-gateway
COPY target/micro-gateway.jar /micro-gateway
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /micro-gateway/micro-gateway.jar"]
EXPOSE 9000

3.项目上传到gitee

###相关命令上传项目第一步:建立本地git仓库cd 到你的本地项目根目录下,执行git命令git init第二步:将本地项目工作区的所有文件添加到暂存区git add .    // . 表示所有文件, 如果想添加项目中的指定文件,那就把 . 改为指定文件名即可 第三步:将暂存区的文件提交到本地仓库git commit -m ""   //冒号里面写注释语句 eg:git commit -m "init project"第四步:在码云上创建自己的项目,创建如图所示创建仓库 https://gitee.com/wondersgroups/little-sweet-sister.git--仓库地址第五步:将本地仓库关联到码云上git remote add origin https://gitee.com/wondersgroups/little-sweet-sister.git注意:在这一步时如果出现错误:fatal:remote origin already exists 意思是路径存在了,就需要删除原来的路径从新添加git remote rm origin第六步:最后一步,将代码由本地仓库上传到Github远程仓库git push -u origin master    指定分支 mastergit push -u origin +master   强制上传注意:如果报failed to push some refs to git 错误出现错误的主要原因是码云中的README.md文件不在本地代码目录可以通过如下命令进行代码合并【注:pull=fetch+merge]git pull --rebase origin master执行上面代码后可以看到本地代码库中多了README.md文件此时再执行语句 git push -u origin master即可完成代码上传到github 执行完之后如果无错误就上传成功了!需要提示的是这里的master是Github默认的分支,如果你本地的当前分支不是master,就用git checkout master命令切换到master分支,如果你想用本地当前分支上传代码,则把第六步的命令里的master切换成你的当前分支名即可。如果最后再出现错误,就执行下面代码:git push -u origin master -f  强制命令会覆盖别人分支,慎用   

 

第四节 jenkins部署项目相关配置

 

 

 

 

##############################################################################################################################
###构建命令
##############################################################################################################################echo $JAVA_HOMEecho "=============java变量路径:$JAVA_HOME" PROJECT_LOCATION=little-sweet-sisterGROUP_ID=com.microcd /var/jenkins_home/workspace/${PROJECT_LOCATION}/${PROJECT} && /var/jenkins_home/apache-maven-3.6.1/bin/mvn  clean install -am -pl ${GROUP_ID}:${PROJECT} -Dmaven.test.skip=true#cd $PROJECT_LOCATION && /var/jenkins_home/apache-maven-3.6.1/bin/mvn  clean install -am -pl ${GROUP_ID}:${PROJECT} -Dmaven.test.skip=trueTAG=`date "+%Y%m%d"`IMAGE_NAME=$PROJECTecho "=============查看进程id,然后删除"#容器idcid=$(docker ps -a | grep $IMAGE_NAME | awk '{print $1}')#镜像idiid=$(docker images | grep $IMAGE_NAME | awk '{print $3}')if [ -n "$cid" ]; thenecho "存在容器$IMAGE_NAME,cid=$cid,删除容器。。。"docker rm -f $cidelseecho "不存在$IMAGE_NAME容器"fiif [ -n "$iid" ]; thenecho "存在镜像$IMAGE_NAME,iid=$iid,删除容器镜像。。。"#docker rmi -f $iidelseecho "不存在$IMAGE_NAME镜像"fi #####case $PROJECT in "micro-gateway")    cd /var/jenkins_home/workspace/${PROJECT_LOCATION}/micro-gateway;;"micro-pay")cd micro-pay;;"micro-base")    cd micro-base;;   *)echo "error";;esac### 构建容器docker build -t $IMAGE_NAME .echo "=============开始构建镜像$IMAGE_NAME"echo "当前docker 所有镜像:"docker imagesecho "启动容器------->"case $PROJECT in"micro-gateway")docker run -p 9000:9000 -d --restart=always -e JAVA_OPTS='-Xmx500m -Xms300m -Dspring.profiles.active=test' -v /Users/jiajie/soft/logs/micro-gateway:/data/log --name $IMAGE_NAME  $IMAGE_NAME;;"micro-pay")docker run -p 8082:8082 -d --restart=always -e JAVA_OPTS='-Xmx500m -Xms300m -Dspring.profiles.active=test' -v /Users/jiajie/soft/logs/micro-pay:/data/log --name $IMAGE_NAME  $IMAGE_NAME  ;;*)echo "error";;esac    echo "启动服务成功"echo "查看启动的所有进程:" docker ps

 

第五节 测试启动

1.项目发布构建

 

 

2.查看宿主机进程

#查看宿主机进程
docker ps

 

3.查看jenkins容器进程

 

#查看jenkins容器进程
docker exec -it bae630c41276 /bin/bash 
docker ps

 

 

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...