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.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    指定分支 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

 

 

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值