jenkins共用宿主机中的docker自动化部署
- 开源代码
- 2025-08-21 13:42:03

目录
第一节 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/soft mkdir 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 <build> <finalName>micro-gateway</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--加入下面两项配置--> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <includeSystemScope>true</includeSystemScope> <mainClass>com.micro.microgateway.MicroGatewayApplication</mainClass> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin> </plugins> </build> 2.编写dockerfile文件 FROM openjdk:8-jdk-alpine MAINTAINER heshuai <2460983732@qq > ##镜像源 RUN echo "http://mirrors.aliyun /alpine/v3.6/main" > /etc/apk/repositories \ && echo "http://mirrors.aliyun /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" 第四步:在码云上创建自己的项目,创建如图所示 创建仓库 gitee /wondersgroups/little-sweet-sister.git--仓库地址 第五步:将本地仓库关联到码云上 git remote add origin gitee /wondersgroups/little-sweet-sister.git 注意:在这一步时如果出现错误:fatal:remote origin already exists 意思是路径存在了,就需要删除原来的路径从新添加 git remote rm origin 第六步:最后一步,将代码由本地仓库上传到Github远程仓库 git push -u origin master 指定分支 master git 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_HOME echo "=============java变量路径:$JAVA_HOME" PROJECT_LOCATION=little-sweet-sister GROUP_ID=com.micro cd /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=true TAG=`date "+%Y%m%d"` IMAGE_NAME=$PROJECT echo "=============查看进程id,然后删除" #容器id cid=$(docker ps -a | grep $IMAGE_NAME | awk '{print $1}') #镜像id iid=$(docker images | grep $IMAGE_NAME | awk '{print $3}') if [ -n "$cid" ]; then echo "存在容器$IMAGE_NAME,cid=$cid,删除容器。。。" docker rm -f $cid else echo "不存在$IMAGE_NAME容器" fi if [ -n "$iid" ]; then echo "存在镜像$IMAGE_NAME,iid=$iid,删除容器镜像。。。" #docker rmi -f $iid else echo "不存在$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 images echo "启动容器------->" 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
jenkins共用宿主机中的docker自动化部署由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“jenkins共用宿主机中的docker自动化部署”
上一篇
CSS选择器
下一篇
lazada买家订单导出