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

jenkins 共用宿主机中的docker自动化部署_第1张图片

 

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

 

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

 

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

1.界面配置

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

jenkins 共用宿主机中的docker自动化部署_第2张图片

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

 

 

jenkins 共用宿主机中的docker自动化部署_第3张图片

jenkins 共用宿主机中的docker自动化部署_第4张图片

 

jenkins 共用宿主机中的docker自动化部署_第5张图片

 

jenkins 共用宿主机中的docker自动化部署_第6张图片

 

1.配置mave

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

 

jenkins 共用宿主机中的docker自动化部署_第7张图片

2.配置gitee

 

jenkins 共用宿主机中的docker自动化部署_第8张图片

jenkins 共用宿主机中的docker自动化部署_第9张图片

 

jenkins 共用宿主机中的docker自动化部署_第10张图片

jenkins 共用宿主机中的docker自动化部署_第11张图片

 

jenkins 共用宿主机中的docker自动化部署_第12张图片

 

jenkins 共用宿主机中的docker自动化部署_第13张图片

 

jenkins 共用宿主机中的docker自动化部署_第14张图片

 

第三节 创建springboot多模块项目

 1.相关配置

jenkins 共用宿主机中的docker自动化部署_第15张图片

1.pom

#####  需要加上 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
            
        
    

 2.编写dockerfile文件

FROM openjdk:8-jdk-alpine
MAINTAINER heshuai <[email protected]>
##镜像源
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    指定分支 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部署项目相关配置

jenkins 共用宿主机中的docker自动化部署_第16张图片

jenkins 共用宿主机中的docker自动化部署_第17张图片

jenkins 共用宿主机中的docker自动化部署_第18张图片

 

jenkins 共用宿主机中的docker自动化部署_第19张图片

jenkins 共用宿主机中的docker自动化部署_第20张图片

 

jenkins 共用宿主机中的docker自动化部署_第21张图片

 

jenkins 共用宿主机中的docker自动化部署_第22张图片

 

##############################################################################################################################
###构建命令
##############################################################################################################################

    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.项目发布构建

jenkins 共用宿主机中的docker自动化部署_第23张图片

jenkins 共用宿主机中的docker自动化部署_第24张图片

 

jenkins 共用宿主机中的docker自动化部署_第25张图片

 

jenkins 共用宿主机中的docker自动化部署_第26张图片

2.查看宿主机进程

#查看宿主机进程
docker ps

 

3.查看jenkins容器进程

 

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

 

 

 

你可能感兴趣的:(docker,springcloud,jenkins,docker,自动化)