docker java自动化部署_docker+jenkins+springboot终极智能全自动化部署
docker+jenkins+springboot终极智能全自动化部署本篇文章引导你使用Jenkins部署SpringBoot项目,同时使用Docker和Git实现简单的持续集成和持续部署。docker下安装jenkins拉取jenkins镜像1docker pull jenkins/jenkins该镜像为最新版镜像 jenkins非最新版 很多插件安装不上查看已经安装的镜像1docker ima
docker+jenkins+springboot终极智能全自动化部署
本篇文章引导你使用Jenkins部署SpringBoot项目,同时使用Docker和Git实现简单的持续集成和持续部署。
docker下安装jenkins
拉取jenkins镜像
1docker pull jenkins/jenkins
该镜像为最新版镜像 jenkins非最新版 很多插件安装不上
查看已经安装的镜像
1docker images
运行镜像
1docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins/:/var/jenkins_home jenkins/jenkins
简单解释一下这个语句
-d 表示已守护线程运行,即为后台运行
-p 表示docker容器和端口的映射,后面的是容器的端口,前面的是宿主机的端口,
-v 表示数据卷的映射,后面是容器内的文件夹地址,前面为宿主机的
运行docker ps查看是否正常启动
1
2
3
4[root@hyb ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e358a510dc5 jenkins/jenkins "/sbin/tini -- /us..." 5 weeks ago Up 33 hours 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp myjenkins
如果未正常启动多半是端口被占用了,运行netstat -tunlp|grep 8080 即可检查端口占用情况
接下来打开浏览器访问 你的ip:8080 即可看到jenkins的安装界面,如果看不到的话检查服务器防火墙设置
首次运行时需要你输入一个密码,打开映射的路径下的secrets/initialAdminPassword,例如 /var/jenkins/secrets/initialAdminPassword
输入密码后会看到安装插件的页面
选择第一个默认安装
安装完成后创建管理员,填写完成提交即可
至此, jenkins已经安装完毕啦
jenkins部署springboot
配置项目的Dockerfile
在项目的根目录中新建一个文件 名称为Dockerfile ,填入以下内容
1
2
3
4
5
6
7
8
9FROM java:8
VOLUME /tmp
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD service.jar /usr/share/myservice/myservice.jar
RUN bash -c 'touch /usr/share/myservice/myservice.jar'
ADD arthas-boot.jar /arthas-boot.jar
ENTRYPOINT java -Xms512m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -jar /usr/share/myservice/myservice.jar
EXPOSE 8088
对jdk 配置的修改可以自行修改
配置ssh服务器
首页 -> 点击系统管理 -> 管理插件 ->可选插件 -> 过滤:ssh -> 选择Publish Over SSH插件,点击直接安装
jenkins首页,系统管理 -> 系统设置 -> 下拉,找到Publish over SSH 点击新增
Name为服务器名称
Hostname填写服务器ip
userName填写用户名
RemoteDirectory指工作目录,比如填写/tmp 发送过去的所有文件默认在/tmp下
点击高级->选择Use password authentication,or use a different key
输入密码或者输入秘钥
点击保存退出
创建任务
首页点击新建任务
输入任务名称,选择构建一个maven项目
在general中选择丢弃旧的构建以节省磁盘资源
在源码管理中选择git配置好git地址和密码
在构建环境中指定根pom.xml文件,并且写好maven打包命令
在post steps中选择Run only if build succeeds, 意为在编译成功后执行脚本在add post build step 中选择执行shell 执行sh脚本
该脚本的作用为发送打包好的jar文件到远程服务器,我们采用rsync 工具来传输,该工具对jar包有特殊支持,不必每次传输所有文件,远程对比文件来增量替换jar文件,前提是在容器中跟远程服务器有ssh免密登陆的权限,并且容器中与目标机器必须都安装了rsync 该工具可以采用apt-get 或者yum直接安装,在脚本中添加
1rsync -av /var/jenkins_home/workspace/你的项目路径/test*.jar 你的用户名@你的IP:/tmp/test/service.jar
修改本行命令中为对应的jar包地址和对应服务器的放置地址
ps:在容器中使用rsync时,需要在容器中生成ssh秘钥,远程连接而不是宿主机
进入容器的命令为docker exec -it 容器名 bash
ssh 免密登陆操作步骤:
1.ssh-keygen 一直回车
2.ssh-copy-id 用户名@ip 输入yes之后输密码就好了
在构建后操作中选择send build artifacts over ssh 意为向远程服务器发送文件并执行命令
选择之前填写好的服务器,sourcefiles填写**/DockerFile
remote directory 即为远程发送过去的文件地址
execCommand中输入以下脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#!/bin
# DockerFile和jar包所在的文件夹
DOCKER_FILE_BASE_PATH=
# 修改jar包名称统一改为service.jar
mv $DOCKER_FILE_BASE_PATH/*.jar $DOCKER_FILE_BASE_PATH/service.jar
# 应用名称,也为容器名称
APPLICATION_NAME=
# 镜像名称
IMAGE_NAME=$APPLICATION_NAME:latest
# 停止并删除旧的容器
set -e; docker stop $APPLICATION_NAME && docker rm $APPLICATION_NAME || EXIT_CODE=$? && true;
#删除旧的镜像
set -e; docker rmi $IMAGE_NAME || EXIT_CODE=$? && true;
#构建镜像
docker build -t $IMAGE_NAME $DOCKER_FILE_BASE_PATH
#运行容器
docker run --name $APPLICATION_NAME -e "SPRING_PROFILES_ACTIVE=test" -d -p 8085:8088 -p 10009:10009 $IMAGE_NAME
点击保存,然后左上点击立即构建
点击下面的buildhistory中正在构建的一个
点击控制台输出,即可查看构建日志,至此整套自动化部署已完全完成
有兴趣可以关注我的个人微信公众号,会定期推送关于Java的技术文章,而且目前不恰饭都是干货哈哈哈哈
更多推荐
所有评论(0)