jenkins+docker+pipline部署springboot项目

注:jenkins也是采用的docker镜像运行的

1.安装jenkins

# 查找jenkins镜像
sudo docker search jenkins/jenkins

# 拉取jenkins镜像
sudo docker pull jenkins/jenkins

# 运行镜像
sudo docker run -d -p 10240:8080 -p 10241:50000 -v /home/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name my-jenkins jenkins/jenkins

我的服务器上是把jenkins的目录挂在到 /home/jenkins_mount目录下

访问 https://[服务器IP]:10240,等jenkins初始化好后,安装默认的插件

2.修改springboot项目配置

springboot项目根目录下新增三个文件:
(文件中所有的xxx都是项目名称,可以自己定义)

deploy.sh

#!/bin/bash

#项目占用端口
APP_PORT=8999
# 项目名字
APP_NAME=xxx
APP_HOME=/test/deploy/${APP_NAME}
APP_OUT=${APP_HOME}/logs
APP_TAG=2.0

mkdir -p ${APP_HOME}
mkdir -p ${APP_OUT}

echo "清理已有容器及镜像资源"
docker stop ${APP_NAME} && docker rm ${APP_NAME}
echo "清理已有容器及镜像资源成功!!!!"

echo "镜像制作"
docker build -t ${APP_NAME}:${APP_TAG} .
echo "镜像制作完成"

echo "开始运行"
docker run -d --name ${APP_NAME} -p 9005:7777 -v ${APP_OUT}:/usr/local/${APP_NAME}/logs ${APP_NAME}:${APP_TAG}
echo "已成功运行"
docker run -d --name ${APP_NAME} -p 9005:7777 -v 

这行代码的意思是:将构建好的镜像的7777端口(具体看你的application.yml配置的端口)绑定到宿主机的9005端口,后期要配合单独nginx镜像对外提供服务,就可以为nginx镜像配置代理规则,比如http://abc.com/api 将 /api转发到9005端口

Dockerfile

FROM openjdk:8-jre
MAINTAINER Mroldx
ENV PROJECT_NAME xxx
ENV PROJECT_HOME /usr/local/${PROJECT_NAME}
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN mkdir $PROJECT_HOME && mkdir $PROJECT_HOME/logs
COPY xxx/target/*.jar /application.jar
ENTRYPOINT ["java", "-jar","/application.jar"]

Jenkinsfile

pipeline {
    agent none
    stages {
        stage('Build') {
            agent {
                docker {
                    image 'maven:3-alpine'
                    args '-v /root/.m2:/root/.m2'
                }
            }
            steps {
                sh 'mvn clean install -DskipTests=true'
            }
        }
        stage('Deploy') {
            agent any
            steps {
                sh 'sh deploy.sh'
            }
        }
    }
}

Jenkinsfile文件不是必须的,因为我这边流水线配置的是

Pipeline script from SCM

需要从项目代码中获取pipeline执行脚本,需要配置git地址,账号密码等,简单来说,就是先把代码pull下来,再从代码里面找到Jenkinsfile执行文件里的pipeline script
如果选择

Pipeline script

则直接将脚本贴到下方的文本框里即可

配置完成后,选择保存,开始构建项目
构建完成后,在ssh中执行

sudo docker ps

看看镜像有没有在运行🌹

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×