docker+jenkins+springboot终极自动化部署攻略

docker+jenkins+springboot终极智能全自动化部署

本篇文章引导你使用Jenkins部署SpringBoot项目,同时使用Docker和Git实现简单的持续集成和持续部署。java

docker下安装jenkins

拉取jenkins镜像git

docker pull jenkins/jenkins
复制代码

该镜像为最新版镜像 jenkins非最新版 不少插件安装不上spring

查看已经安装的镜像docker

docker images
复制代码

运行镜像shell

docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins/:/var/jenkins_home  jenkins/jenkins
复制代码

简单解释一下这个语句浏览器

  • -d 表示已守护线程运行,即为后台运行
  • -p 表示docker容器和端口的映射,后面的是容器的端口,前面的是宿主机的端口,
  • -v 表示数据卷的映射,后面是容器内的文件夹地址,前面为宿主机的

运行docker ps查看是否正常启动springboot

[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 便可检查端口占用状况bash

接下来打开浏览器访问 你的ip:8080 便可看到jenkins的安装界面,若是看不到的话检查服务器防火墙设置服务器

首次运行时须要你输入一个密码,打开映射的路径下的secrets/initialAdminPassword,例如 /var/jenkins/secrets/initialAdminPassword微信

输入密码后会看到安装插件的页面

示例
选择第一个默认安装

安装完成后建立管理员,填写完成提交便可

至此, jenkins已经安装完毕啦


jenkins部署springboot

配置项目的Dockerfile

在项目的根目录中新建一个文件 名称为Dockerfile ,填入如下内容

FROM 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直接安装,在脚本中添加

rsync -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中输入如下脚本:

#!/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的技术文章,并且目前不恰饭都是干货哈哈哈哈

小阿宅Java
相关文章
相关标签/搜索