主页 > 开源代码  > 

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

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

目录

第一节 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自动化部署