如何使用Jenkins打包微服务构建Docker镜像运行(docker,jenkins,开发技术)

时间:2024-05-06 17:07:37 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    环境准备

    1.Jenkins
    2.GitLab
    3.SonarQube
    4.Harbor
    5.Docker
    6.Maven
    7.JDK1.8
    8.微服务项目

    以上技术部分在我之前的文章中有写过

    这里就不过多细化的演示,本文章主要是连贯性的将微服务项目源代码–>提交远程仓库GitLab–>Jenkins从Gitlab拉取代码到服务器–>SonarQube代码审核–>Maven编译打包–>构建Docker镜像–>推送私有Harbor镜像仓库–>其他服务器部署

    开始

    1.GitLab远程仓库创建微服务项目

    如何使用Jenkins打包微服务构建Docker镜像运行

    2.IDEA代码推送到Gitlab

    如何使用Jenkins打包微服务构建Docker镜像运行

    默认文件夹对了就不用更改

    如何使用Jenkins打包微服务构建Docker镜像运行

    添加本地仓库

    如何使用Jenkins打包微服务构建Docker镜像运行

    提交本地仓库

    如何使用Jenkins打包微服务构建Docker镜像运行

    推送远程仓库

    如何使用Jenkins打包微服务构建Docker镜像运行

    3.Jenkins创建流水线项目

    如何使用Jenkins打包微服务构建Docker镜像运行

    4.参数化构建

    如何使用Jenkins打包微服务构建Docker镜像运行

    5.拉取远程仓库的构建脚本

    如何使用Jenkins打包微服务构建Docker镜像运行

    应用保存

    6.编写远程审查脚本sonar-project.properties

    如何使用Jenkins打包微服务构建Docker镜像运行

    构建脚本

    1.拉取代码

    stage('拉取代码'){checkout([$class:'GitSCM',branches:[[name:"*/${branch}"]],doGenerateSubmoduleConfigurations:false,extensions:[],submoduleCfg:[],userRemoteConfigs:[[credentialsId:"${git_auth}",url:"${git_url}"]]])}

    如何使用Jenkins打包微服务构建Docker镜像运行

    如何使用Jenkins打包微服务构建Docker镜像运行

    2.审查代码

    stage('代码审查'){//定义当前Jenkins的SonarQubeScanner工具defscannerHome=tool'SonarQube'//引用当前JenkinsSonarQube环境withSonarQubeEnv('SonarQube'){sh"""cd${project_name}//这是定义的选项参数${scannerHome}/bin/sonar-scanner"""}}

    如何使用Jenkins打包微服务构建Docker镜像运行
    如何使用Jenkins打包微服务构建Docker镜像运行

    3.安装公共模块

    stage('编译,安装公共子工程'){sh"mvn-ftensquare_commoncleaninstall"}

    如何使用Jenkins打包微服务构建Docker镜像运行

    查看服务器

    如何使用Jenkins打包微服务构建Docker镜像运行

    4.编译打包微服务

    stage('编译,打包微服务工程'){sh"mvn-f${project_name}cleanpackage"}

    如何使用Jenkins打包微服务构建Docker镜像运行

    查看服务器

    如何使用Jenkins打包微服务构建Docker镜像运行

    截止目前构建流程

    如何使用Jenkins打包微服务构建Docker镜像运行

    5.构建docker镜像
    项目中添加Dockerfile文件,

    如何使用Jenkins打包微服务构建Docker镜像运行

    #FROMjava:8#FROMopenjdk:11-jdk-alpineFROMopenjdk:11ARGJAR_FILECOPY${JAR_FILE}app.jarEXPOSE9001ENTRYPOINT["java","-jar","/app.jar"]

    每个微服务项目Maven中添加dockerfile插件

     <plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.3.6</version><configuration><repository>${project.artifactId}</repository><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration></plugin>

    修改Jenkinsfile文件服务打包后添加dockerfile:build" 用于触发docker镜像构建

    stage('编译,打包微服务工程'){sh"mvn-f${project_name}cleanpackagedockerfile:build"}

    并推送到远程仓库

    Jenkins从新构建

    如何使用Jenkins打包微服务构建Docker镜像运行

    查看服务器

    dockerimages

    如何使用Jenkins打包微服务构建Docker镜像运行

    镜像构建成功

    6.镜像打标签

    公共属性

    //镜像的版本号deftag=“latest”//Harbor的url地址defharbor_url=“192.168.0.188:9123”//镜像库项目名称defharbor_project=“tensquare”
    stage('编译,打包微服务工程上传镜像'){//编译打包--构建镜像sh"mvn-f${project_name}cleanpackagedockerfile:build"//定义镜像名称defimageName="${project_name}:${tag}"//对镜像打上标签sh"dockertag${imageName}${harbor_url}/${harbor_project}/${imageName}"}

    推送远程服务器并Jenkins构建
    查看服务器镜像

    如何使用Jenkins打包微服务构建Docker镜像运行

    7.镜像推送到harbor私有仓库
    这里要在Harbor上提现创建一个仓库
    Jenkins添加harbor用户凭证

    如何使用Jenkins打包微服务构建Docker镜像运行

    进入流水线语法生成harbor的语法

    如何使用Jenkins打包微服务构建Docker镜像运行

    stage('编译,打包微服务工程上传镜像'){//编译打包--构建镜像sh"mvn-f${project_name}cleanpackagedockerfile:build"//定义镜像名称defimageName="${project_name}:${tag}"//对镜像打上标签sh"dockertag${imageName}${harbor_url}/${harbor_project}/${imageName}"//把镜像推送到HarborwithCredentials([usernamePassword(credentialsId:"${harbor_auth}",passwordVariable:'password',usernameVariable:'username')]){//登录到Harborsh"dockerlogin-u${username}-p${password}${harbor_url}"//镜像上传sh"dockerpush${harbor_url}/${harbor_project}/${imageName}"sh"echo镜像上传成功"}}

    推送远程仓库,Jenkins远程构建,查看推送到私有仓库的镜像

    如何使用Jenkins打包微服务构建Docker镜像运行

    远程推送镜像成功!!!

    8.拉取镜像并启动程序
    由于需要远程拉取镜像和启动程序,所以需要先在Jenkins上安装Publish Over SSH插件,实现远程发送Shell命令

    如何使用Jenkins打包微服务构建Docker镜像运行

    配置插件

    如何使用Jenkins打包微服务构建Docker镜像运行

    这里需要注意一下,需要两台服务器建立通信,使用ssh远程连接,即Jenkins使用ssh远程操作188服务器拉取镜像,启动应用
    这个过程中需要Jenkins的宿主服务器产生公钥、私钥然后copy给188服务器,
    1.切换到ssh目录下

    cd/root/.ssh如果提示:bash:cd:.ssh:没有那个文件或目录执行sshhostname(你自己的主机名)

    2.在Jenkins宿主服务器上执行生成公私钥的命令

    ssh-keygen-trsa

    然后对比下面

    如何使用Jenkins打包微服务构建Docker镜像运行

    id_rsa为私钥 id_rsa.pub为公钥

    3.复制公钥id_rsa.pub到188服务器

    ssh-copy-id192.168.0.188

    4.检查188服务器拷贝到的密钥

    如何使用Jenkins打包微服务构建Docker镜像运行

    5.测试Jenkins的ssh远程连接

    如何使用Jenkins打包微服务构建Docker镜像运行

    测试成功

    6.使用流水线语法生成器生成ssh命令

    如何使用Jenkins打包微服务构建Docker镜像运行

    复制到Jenkinsfile文件中

    //应用部署sh"echo应用部署"sshPublisher(publishers:[sshPublisherDesc(configName:'188',transfers:[sshTransfer(cleanRemote:false,excludes:'',execCommand:"/data/Jenkins_shell/deploy.sh$harbor_url$harbor_project$project_name$tag$port",execTimeout:120000,flatten:false,makeEmptyDirs:false,noDefaultExcludes:false,patternSeparator:'[,]+',remoteDirectory:'',remoteDirectorySDF:false,removePrefix:'',sourceFiles:'')],usePromotionTimestamp:false,useWorkspaceInPromotion:false,verbose:false)])/data/Jenkins_shell/deploy.sh这个路径指向是一个脚本文件,用于操作docker容器的,这个脚本提供在下面$harbor_url 镜像私有仓库地址$harbor_project 私有仓库中的项目名$project_name 项目名$tag拉取镜像的版本$port这个参数还需要额外在Jenkins构建是提供参数这几个参数与线面这个文件中的参数是一一对应的
    #!/bin/sh#接收外部参数harbor_url=$1harbor_project=$2project_name=$3tag=$4port=$5imageName=$harbor_url/$harbor_project/$project_name:$tagecho"$imageName"#查询容器是否存在,存在则删除containerId=`dockerps-a|grep-w${project_name}:${tag}|awk'{print$1}'`if["$containerId"!=""];then#停掉容器dockerstop$containerId#删除容器dockerrm$containerId echo"成功删除容器"fi#查询镜像是否存在,存在则删除imageId=`dockerimages|grep-w$project_name|awk'{print$3}'`if["$imageId"!=""];then#删除镜像dockerrmi-f$imageId echo"成功删除镜像"fi#登录Harbordockerlogin-uuser-p877425287User$harbor_url#下载镜像dockerpull$imageName#启动容器dockerrun-di-p$port:$port$imageNameecho"容器启动成功"

    添加Jenkins入参

    如何使用Jenkins打包微服务构建Docker镜像运行

    提交代码,开始构建

    如何使用Jenkins打包微服务构建Docker镜像运行

    构建成功

    如何使用Jenkins打包微服务构建Docker镜像运行

    代码审查SonarQube

    如何使用Jenkins打包微服务构建Docker镜像运行

    镜像仓库Harbor

    如何使用Jenkins打包微服务构建Docker镜像运行

    188远程服务器拉取的镜像

    如何使用Jenkins打包微服务构建Docker镜像运行

    查看容器启动状态

    如何使用Jenkins打包微服务构建Docker镜像运行

    访问测试容器

    如何使用Jenkins打包微服务构建Docker镜像运行

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:如何使用Jenkins打包微服务构建Docker镜像运行的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:怎么在C#循环中捕获局部变量下一篇:

    5 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18