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

目录

第一节 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

 

 

 

相关内容

热门资讯

哈马斯代表团抵达埃及开罗 将商... 转自:财联社【哈马斯代表团抵达埃及开罗 将商讨推进落实加沙停火协议】财联社1月14日电,巴勒斯坦伊斯...
杀猪宴爆火,收获了流量升腾起年...     1月13日,湖南湘江新区莲花镇五丰村一座农家小院,人们在等候分享杀猪宴。  继株洲网友喊话要...
cctv新闻频道筑梦中国观后感...   《筑梦中国》共分“风雨如磐”“中流击水”“正道沧桑”“伟大转折”“世纪跨越”“发展新境”“圆梦有...
大学生村官筑梦之基观后感 大学...   在观看了教育纪录片《筑梦之基》后,我的内心久久不能平静,深受启发和鼓舞。教育片回顾了中国共产党的...
警察筑梦中国观后感1000字 ...  《筑梦中国》分“风雨如磐”“中流击水”“正道沧桑”“伟大转折”“世纪跨越”“发展新境”“圆梦有时”...