大家可以看我前面文章,里面有docker与jenkins入门到实战,今天我们直接使用harbor+docker+Jenkins远程部署了。
harbor是一个专门管理docker镜像的程序,跟gitlab管理文件应用类似啦,当然我们用harbor不仅仅是管理镜像,我们需要使用harbor配合docker+jenkins实现远程部署。
首先我们需要安装一个harbor,这边大家自行百度进行安装啦。安装好的页面,默认账号admin/Harbor12345:
进入我们的harbor管理中创建我们的项目进行管理镜像:
我这边有两个镜像,我们来说一下自动部署打包的流程:
1:编写我们的jinkensfile文件,在脚本中我执行的是/sh/implement.sh位置的脚本,记得加sh文件的可执行权限:
pipeline
{
agent any
stages {
stage('正在拉取git代码~11') {
steps {
checkout([$class:'GitSCM', branches: [[name:
'*/master']],extensions: [],userRemoteConfigs: [[credentialsId:
'ba65aaec-8e0b-4695-b510-11d5857af4be', url:'http://192.168.10.7:8065/root/spring-boot.git']]])
}
}
stage('编译构建2') {
steps {
sh label:'', script:'mvn clean package dockerfile:build'
}
}
stage('构建dock212') {
steps {
//给镜像打标签123
sh "docker tag hello-boot:latest 192.168.10.6:8066/test/hello-boot:latest"
//登陆
withCredentials([usernamePassword(credentialsId: '4563136a-fd34-4c43-b4dc-9480efca0b77', passwordVariable: 'password', usernameVariable: 'username')]) {
//登录
sh "docker login -u ${username} -p ${password} 192.168.10.6:8066"
//上传镜像
sh "docker push 192.168.10.6:8066/test/hello-boot:latest"
}
//删除本地镜像
sh "docker rmi -f hello-boot"
sh "docker rmi -f 192.168.10.6:8066/test/hello-boot:latest"
sshPublisher(publishers: [sshPublisherDesc(configName: '10.7service',
transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '/sh/implement.sh',
execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false,
patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '',
sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
sh脚本文件:
harbor_url=192.168.10.6:8066
harbor_project_name=test
project_name=hello-boot
tag=latest
port=8058
echo "1"
imageName=$harbor_url/$harbor_project_name/$project_name:$tag
echo "$imageName"
echo "2"
containerId=`docker ps -a | grep -w ${project_name}:${tag} | awk '{print $1}'`
if [ "$containerId" != "" ] ; then
echo "3"
docker stop $containerId
echo "4"
docker rm $containerId
echo "5"
echo "成功删除容器"
fi
echo "6"
imageId=`docker images | grep -w $project_name | awk '{print $3}'`
echo "7"
if [ "$imageId" != "" ] ; then
echo "8"
docker rmi -f $imageId
echo "9"
echo "成功删除镜像"
fi
2:在执行远程sh文件时,jenkins需要安装插件:Publish Over SSH
3:拷贝公钥到远程服务器,在我们的192.168.10.6目录/root/.ssh/:
我们在该路径下执行ssh-copy-id 192.168.10.7,那么192.168.10.7目录下会有一个文件:
然后在jenkins 系统配置中配置:
测试:
我们来看看192.168.10.7服务器docker镜像情况:
浏览器访问:
简单的微服务自动部署成功,由于小博主家里服务器及个人电脑设备是在有点卡‘感叹生活不易呜呜’,所以先部署到这里啦。大家可以自己根据简单自动部署结合自己的部署经验去构建属于自己的微服务部署。