目录
第一节 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容器进程
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


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

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

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





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









##### 需要加上 spring-boot-maven-plugin
########否则打包会报 no main manifest attribute, in app.jar
micro-gateway org.springframework.boot spring-boot-maven-plugin repackage true com.micro.microgateway.MicroGatewayApplication org.apache.maven.plugins maven-surefire-plugin true
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
###相关命令上传项目第一步:建立本地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 强制命令会覆盖别人分支,慎用







##############################################################################################################################
###构建命令
##############################################################################################################################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




#查看宿主机进程
docker ps

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