JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,基于经典技术组合(Spring Boot、Spring MVC、Apache Shiro、MyBatis、Beetl、Bootstrap、AdminLTE)采用经典开发模式,让初学者能够更快的入门并投入到团队开发中去。在线代码生成功能,包括模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。采用松耦合设计,模块增减便捷;界面无刷新,一键换肤;众多账号安全设置,密码策略;文件在线预览;消息推送;多元化第三方登录;在线定时任务配置;支持集群,支持SAAS;支持多数据源;支持读写分离、分库分表;支持微服务应用。
JeeSite 是一款基于Spring Boot开发框架的项目。它的运行是需要依赖一些特定环境
# 拉取docker镜像
docker pull mysql
# 实例化并启动mysql容器
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=ouyi1994 -p 3306:3306 mysql
# 进入容器
docker exec -it my_mysql bash
# 验证mysql是否启动
mysql -u root -p
这时外界是无法访问MySQL的,还需要设置MySQL能接受任何方式连接。
# 进入MySQL容器
docker exec -it mysql容器id bash
# 进入MySQL
mysql -u root -p
# 设置MySQL支持其他方式连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'
参考前面章节
maven主要是用于Java源码编译打包时需要。
Linux下安装maven
(1)下载maven安装包
地址:http://maven.apache.org/download.cgi
(2)解压
sudo tar -zxvf apache-maven-3.6.3-bin.tar.gz
(3)配置环境变量
vi /etc/profileexport MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
(4)重新加载环境变量
source /etc/profile
(5)验证
mvn -version
(7)修改maven下载镜像源
maven会使用坐标定位的方式,获取到我们代码中的第三方库。并联网下载。可以修改maven下载镜像源,来提供maven的下载速度。
进入maven安装目录下的config目录,修改setting.xml文件
Windows下安装maven
(1)下载安装包并解压
(2)配置环境变量
(3)验证
(4)修改maven的下载镜像源
修改apache-maven-3.6.3\conf下的settings.xml文件
<mirror><id>alimavenid><name>aliyun mavenname><url>http://maven.aliyun.com/nexus/content/qroups/public/url><mirrorOf>centralmirrorOf>
mirror>
我们需要在本地将项目调试运行通过后&#xff0c;再做相关的持续集成操作
&#xff08;1&#xff09;新建数据库
create database jeesite
&#xff08;2&#xff09;导入初始化数据到数据库
第一步&#xff1a;项目文件中配置数据库相关信息
在jeesite4\web\src\main\resources\config\application.yml文件中&#xff0c;填写数据库相关信息
第二步&#xff1a;执行初始化脚本
jeesite4\web\bin目录下执行init-data.sh&#xff08;Linux&#xff09;或者init-data.bat&#xff08;windows&#xff09;脚本
第三步&#xff1a;查看数据库中是否已有初始数据
(1) 在maven中导入项目root模块下的pom.xml文件
导入这个文件&#xff0c;会自动将整个项目导入到maven中
&#xff08;2&#xff09;使用maven编译项目
注意&#xff1a;maven在命令行也可以编译项目&#xff0c;方式如下&#xff1a;
进入项目的root目录后&#xff0c;执行命令‘mvn clean install’
进入项目的web目录&#xff0c;执行命令&#xff1a;‘mvn clean spring-boot:run’
使用tomcat发布spring-boot项目&#xff08;jeesite&#xff09;&#xff0c;需要以下环境。
1.下载tomcat安装包&#xff1a;http://tomcat.apache.org/download-80.cgi#8.0.50
2.将下载的tomcat传输到**/usr/local**/tomcat目录下解压
tar -zxvf apache-tomcat-8.5.61.tar.gz
# 添加权限&#xff0c;防止权限不够出错
chmod -R 777 apache-tomcat-8.5.64/
3.启动tomact
cd /usr/local/tomcat/apache-tomcat-8.5.61/bin
./staup.sh
4.检测&#xff1a;访问http://42.193.187.134:8080/&#xff0c;如果不能显示猫咪&#xff0c;则需要关闭防火墙
&#xff08;1&#xff09;启动&#xff0c;停止脚本
在/usr/local/tomcat/apache-tomcat-8.5.64/bin目录下的startup.sh和shutdown.sh
&#xff08;2&#xff09;日志文件
在/usr/local/tomcat/apache-tomcat-8.5.64/logs目录下的catalina.out
&#xff08;3&#xff09;配置文件
在/usr/local/tomcat/apache-tomcat-8.5.64/conf目录下的server.xml
&#xff08;4&#xff09;发布项目
将项目包拷贝到/usr/local/tomcat/apache-tomcat-8.5.64/webapps/ROOT目录下&#xff0c;用于发布
node(&#39;salve-mylinux2&#39;) {stage(&#39;同步源码&#39;) {sh"""## 创建一个目录&#xff0c;用于存放拉取的源码mkdir jeesite || echo "the dir jeesite is exited""""dir("jeesite"){git credentialsId:&#39;gitee_ouyi&#39;, branch:&#39;master&#39;, url:&#39;git&#64;gitee.com:xxx/jeesite4.git&#39; # 项目源码地址}}stage(&#39;maven编译打包&#39;) {sh &#39;&#39;&#39;. ~/.bash_profilecd jeesiteexport pwd&#61;&#96;pwd&#96;## 修改配置文件中&#xff0c;数据库的信息 cd web/src/main/resources/configsed -i "s/mysql_ip/${mysql_ip}/g" application.ymlsed -i "s/mysql_port/${mysql_port}/g" application.ymlsed -i "s/mysql_user/${mysql_user}/g" application.ymlsed -i "s/mysql_pwd/${mysql_pwd}/g" application.yml## 编译root模块cd $pwd/rootmvn clean install -Dmaven.test.skip&#61;true## 编译web模块cd $pwd/webmvn clean package spring-boot:repackage -Dmaven.test.skip&#61;true -U&#39;&#39;&#39;}stage(&#39;停止 tomcat&#39;) {sh &#39;&#39;&#39;## 停止tomcat的函数, 参数$1带入tomcat的路径$TOMCAT_PATHkillTomcat(){pid&#61;&#96;ps -ef|grep $1|grep java|awk &#39;{print $2}&#39;&#96;echo "tomcat Id list :$pid"if [ "$pid" &#61; "" ]thenecho "no tomcat pid alive"elsekill -9 $pidfi}## 停止TomcatkillTomcat $tomcat_home&#39;&#39;&#39;}stage(&#39;清理环境&#39;) {sh &#39;&#39;&#39;## 删除原有war包rm -f $tomcat_home/webapps/ROOT.warrm -rf $tomcat_home/webapps/ROOT&#39;&#39;&#39;}stage(&#39;部署新的war包&#39;) {sh &#39;&#39;&#39;cp jeesite/web/target/web.war $tomcat_home/webapps/cd $tomcat_home/webappsmv web.war ROOT.war&#39;&#39;&#39;}stage(&#39;启动tomcat&#39;) {sh &#39;&#39;&#39;JENKINS_NODE_COOKIE&#61;dontkillmecd $tomcat_home/binsh startup.sh&#39;&#39;&#39;}
}
为了提高灵活性&#xff0c;我们将MySQL等相关配置&#xff0c;添加到Jenkins任务的环境变量中&#xff0c;供pipeline脚本调用。
在节点属性中分别添加以下环境变量&#xff1a;mysql_ip&#xff08;mysql的ip&#xff09;&#xff0c;mysql_port&#xff08;mysql的端口&#xff09;&#xff0c;mysql_user&#xff08;mysql的用户名&#xff09;&#xff0c;mysql_pwd&#xff08;密码&#xff09;&#xff0c;tomcat_home&#xff08;tomcat的根路径&#xff09;环境变量
登录查看是否项目发布成功
实战流程如下&#xff1a;拉取源码》编译war包》使用war包构建新的docker镜像》启动docker镜像
我们使用dockerfile文件来生成新的的镜像
# 指定基础镜像
FROM tomcat:latest# 指定维护者信息
LABEL maintainer&#61;"hahaha"# 设置容器启动时的环境变量
ENV NGINX_VERSION&#61;1.17.9# 设置构建镜像时的环境变量
ARG WORK_PWD&#61;/usr/local/tomcat# 设置容器用户
USER root# 在初始的tomcat容器中&#xff0c;webapps是一个空文件夹。而webapp相关文件都在webapps.dist文件夹下。所以我们执行下面的命令&#xff0c;将webapps.dist改名为webapps
RUN rm -rf webapps && mv webapps.dist/ webapps && cd webapps && rm -rf ROOT# 设置工作目录
WORKDIR $WORK_PWD/webapps# 文件war包到webapps目录下,并改名为ROOT.war
COPY ./web.war ./ROOT.war# 设置容器的默认端口
EXPOSE 8080# 设置停止容器的策略
STOPSIGNAL SIGRTMAX
pipeline {# 指定运行任务的节点agent {label &#39;salve-mylinux2&#39;}environment {docker_image_name &#61; &#39;jeesite4&#39; # 设置docker镜像名称为变量docker_container_name &#61; &#39;iJeesite4&#39; # 设置docker容器名称为变量}stages{stage(&#39;同步源码&#39;) {steps{sh """mkdir jeesite || echo "the dir jeesite is exit""""dir("jeesite"){git credentialsId:&#39;gitee_ouyi&#39;, branch:&#39;master&#39;, url:&#39;git&#64;gitee.com:xxx/jeesite4.git&#39; # 项目源码地址}}}stage(&#39;设定配置文件&#39;){steps{sh &#39;&#39;&#39;. ~/.bash_profilecd jeesite/web/src/main/resources/configsed -i "s/mysql_ip/${mysql_docker_ip}/g" application.ymlsed -i "s/mysql_port/${mysql_port}/g" application.ymlsed -i "s/mysql_user/${mysql_user}/g" application.ymlsed -i "s/mysql_pwd/${mysql_pwd}/g" application.yml&#39;&#39;&#39;}}stage(&#39;Maven 编译&#39;){steps {sh &#39;&#39;&#39;. ~/.bash_profilecd jeesite/rootmvn clean install -Dmaven.test.skip&#61;truecd ../../jeesite/webmvn clean package spring-boot:repackage -Dmaven.test.skip&#61;true -U&#39;&#39;&#39;}}stage(&#39;停止 / 删除 现有Docker Container/Image &#39;){steps {script{try{sh &#39;docker stop $docker_container_name&#39;}catch(exc){echo &#39;The container $docker_container_name does not exist&#39;}try{sh &#39;docker rm $docker_container_name&#39;}catch(exc){echo &#39;The container $docker_container_name does not exist&#39;}try{sh &#39;docker rmi $docker_image_name&#39;}catch(exc){echo &#39;The docker image $docker_image_name does not exist&#39;}}}}stage(&#39;生成新的Docker Image&#39;){steps {sh &#39;&#39;&#39;cd jeesite/web/bin/dockerrm -f web.warcp ../../../web/target/web.war .docker build -t $docker_image_name .&#39;&#39;&#39;}}stage(&#39;启动新Docker实例&#39;){steps {sh &#39;&#39;&#39;docker run -d --name&#61;$docker_container_name -p 8981:8080 $docker_image_name&#39;&#39;&#39;}}}
}