Jenkins 部署docker容器应用

Jenkins 部署docker容器步骤(无镜像仓库)

  • 创建一个流水线项目
  • 编写流水线脚本
    • 拉取代码
    • 项目打包
    • 删除原镜像
    • 发送到服务器打包成docker镜像
    • 部署镜像
  • 完成构建

一、创建一个流水线项目

1.1流水线pipeline

  • 流水线既能作为任务的本身,也能作为Jenkinsfile
  • 使用流水线可以让我们的任务从ui手动操作,转换为代码化,像docker的dockerfile一样,从shell命令到配置文件,更适合大型项目,可以让团队其他开发者同时参与进来,同时也可以编辑开发Jenkinswebui不能完成的更复杂的构建逻辑,作为开发者可读性也更好。
  • 5个必备的组成部分如下
    • pipeline:整条流水线
    • agent:指定执行器
    • stages:所有阶段
    • stage:某一阶段,可有多个
    • steps:阶段内的每一步,可执行命令

1.2 新建项目

  • 输入用户名
  • 选择流水线
  • 点击确定
    在这里插入图片描述

1.3 创建流水线脚本

在这里插入图片描述

二、编写流水线脚本

2.1拉取代码

stages{
    stage("拉取代码")拉取代码{
        steps{
            git credentialsId: '129d8965-4f3d-4ca6-a493-96b58a79e076', url: 'https://gitee.com/zhuchen888/72crm-9.0-JAVA.git'
            echo '拉取代码成功'
        }
    }
}

2.2 项目打包

stage('run build') {
    steps {
    // 看你xml文件是否在最外边,否则就要用三个双引号的多行sh命令
        sh "mvn package  -Dmaven.test.skip=true"
        echo 'build success'
    }
}

2.3 删除原镜像

sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.150.135', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker stop crm
docker rm crm
docker rmi crm''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

2.4 发送到服务器打包成docker镜像

 stage("send jar to test server"){
   steps{
sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.150.135', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /application
docker build -t crm . 
docker run -d -p 8080:8080 --name crm
''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/application', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/ROOT.war')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo "发送完成"
   }
 }    

2.5 完整的脚本

pipeline {
   agent any    
   stages {
       stage('拉取代码') {
           steps {
               
           git credentialsId: '129d8965-4f3d-4ca6-a493-96b58a79e076', url: 'https://gitee.com/zhuchen888/72crm-9.0-JAVA.git'
           echo '拉取代码成功'
           }
       }
       
       stage('run build') {
           steps {
               
           //    sh "mvn --version"
           // 看你xml文件是否在最外边,否则就要用三个双引号的多行sh命令
       sh "mvn package  -Dmaven.test.skip=true"
       echo 'build success'
           }
       }
       
       stage('clean test server'){
           steps{
sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.150.135', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
rm -rf /application/ROOT.war
docker stop crm
docker rm crm
docker rmi crm''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
           }
       }
       
       stage('send jar to test server') {
           steps {
               
sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.150.135', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /application
docker build -t crm . 
docker run -d -p 8080:8080 crm
''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/application', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/ROOT.war')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo "发送完成"
               
               echo 'jar send over'
           }
       }
   }
}

三、构建测试任务

  • 点击构建
    在这里插入图片描述
  • 构建完成后查看是否传送了jar包
  • 查看是否构建了新的镜像
  • 查看是否运行了容器
  • 访问crm系统,看是否正常运行
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值