Docker集成Jenkins部署SpringBoot项目

Docker集成Jenkins部署SpringBoot项目

安装Jenkins

  • 拉取长期维护版本的Jenkins
docker pull jenkins/jenkins:lts
  • 本地创建容器映射目录
mkdir -p /mydata/jenkins_home
  • 修改权限
chown -R 1000 /mydata/jenkins_home/

安装JDK

  • 解压jdk压缩包:tar -xf jdk-8u161-linux-x64.tar.gz

  • 文件夹移动并改名为jdk:mv jdk1.8.0_161 /usr/local/jdk

  • 编辑环境变量:vi /etc/profile

    export JAVA_HOME=/usr/local/jdk
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    
  • 更新环境变量文件:source /etc/profile

安装maven

  • 解压maven压缩包:tar -xf apache-maven-3.6.3-bin.tar.gz
  • 文件夹移动并改名为maven:mv apache-maven-3.6.3 /usr/local/maven
  • 修改环境变量 vi /etc/profile
export MAVEN_HOME=/usr/local/maven
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
  • 更新配置文件 source /etc/profile

  • 检验环境是否配置成功

启动Jenkins

  • 启动容器(端口号可以自己改)
docker run -di --name=jenkins --user root -p 8998:8080 -v /usr/local/jdk:/usr/local/jdk -v /usr/local/maven:/usr/local/maven -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /mydata/jenkins_home/:/var/jenkins_home jenkins/jenkins:lts
  • 查看Jenkins密码
docker logs jenkins

  • 在网页打开ip+端口,进入Jenkins进行配置,根据提示安装推荐插件,新建管理员账户等,没啥复杂的就不放图了
  • 进来后进行Jenkins的全局配置

  • 刚才启动Jenkins的容器时,已经对jdk和maven的路径做了映射,配置好jdk和maven之后就可以保存了

新建Jenkins项目

  • 新增git的账号密码

  • 就只填账号和密码就行了

  • 输入git地址和选择账号密码,确认分支

  • 可以勾选一个控制台输出带上时间,日志可以看

  • 添加shell脚本,脚本如以下大块,添加完脚本就可以保存了

Jenkins配置shell脚本

#!/bin/bash
#maven打包
/usr/local/maven/bin/mvn clean package
echo 'package ok!'
echo 'build start!'
cd ./
#服务命名(容器命名)
service_name="java-demo"
#服务对应端口(容器里程序执行的端口)
service_prot=8333
#查看容器id
CID=$(docker ps | grep "$service_name" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
    echo "exist $service_name container,CID=$CID"
    #停止
    docker stop $service_name
else
    echo "no exist $service_name container"
fi
#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
    echo "exist $service_name image,IID=$IID"
    #删除镜像
    docker rmi -f $service_name
    echo "delete $service_name image"
    #构建
    docker build -t $service_name .
    echo "build $service_name image"
else
    echo "no exist $service_name image,build docker"
    #构建
    docker build -t $service_name .
    echo "build $service_name image"
fi
#删除容器
docker rm $service_name
#启动(映射给9006端口,可自定义端口)并将存储卷映射到/usr/application/java-demo目录下,记得给这个目录chown -R 1000编辑权限,这样日志文件就能过去了
docker run -id --name=$service_name -p 9006:$service_prot -v /usr/application/java-demo:/home/demo $service_name

Dockerfile示例

  • 把Dockerfile建在项目根目录

# 父容器
FROM openjdk:8
# 作者信息
MAINTAINER ximen <xxx@qq.com>
RUN echo "正在构建镜像!!!"
VOLUME /tmp
RUN mkdir /home/demo
# 添加jar包(路径),如果是当前目录下则可以省略路径,然后起别名
ADD ./target/demo-0.0.1-SNAPSHOT.jar demo.jar
#容器暴露的端口 即jar程序在容器中运行的端口
EXPOSE 8333
# 执行启动jar包命令
CMD nohup java -jar demo.jar >> /home/demo/demo-$(date +%Y-%m-%d).log 2>&1
RUN echo "镜像构建成功!!!"

构建项目

  • 可以点进来看构建项目的控制台输出
  • 想看日志的话可以在Linux命令行查看日志 $service_name = 服务名称(容器名称)
docker logs -f $service_name
  • 查看日志,只显示最后200行
docker logs --tail 200 $service_name
  • 查看最近30分钟的日志
docker logs --since 30m $service_name
  • 查看某时间之后的日志
dockere logs -t --since "2022-06-01T14:06:30" $service_name
  • 查看某时间段之间的日志
docker logs -t --since "2022-06-01T14:06:30" --until "2022-06-01T15:06:30" $service_name

检验服务

  • 记得打开端口,或者关掉防火墙

posted @ 2023-02-09 16:20  -西门-  阅读(302)  评论(0编辑  收藏  举报