前言

该文章主要利用 Docker + Jenkins 来自动化部署发布前后端分离项目。利用 Gitee 自动拉取最新代码,自动将 SpringBoot 项目打成的WAR包和前端 Vue 自动打包发布到 tomcatNginx 下运行。

若你还没有安装 Docker 话,可以参考该文章:【Java篇】Docker怎么玩?


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装Node.js

1.准备好文件

下载Node安装包,在 usr/local 下新建名为 jenkins 文件,在 jenkins 下新建 jenkins_home 文件。将压缩包放到 jenkins 文件夹中,与 jenkins_home 文件夹同级,解压压缩包并修改名字为 node,请参考下图

在这里插入图片描述
注释:文件夹及 node 名字随意,自己定义即可!

2.解压

命令如下(参考):

[root@VM-0-2-centos jenkins]# tar xf node-v12.18.1-linux-x64.tar.xz
[root@VM-0-2-centos jenkins]# ls
node-v12.18.1-linux-x64  node-v12.18.1-linux-x64.tar.xz
[root@VM-0-2-centos jenkins]# mv node-v12.18.1-linux-x64 node
[root@VM-0-2-centos jenkins]# ls
node  node-v12.18.1-linux-x64.tar.xz
[root@VM-0-2-centos jenkins]# cd node
[root@VM-0-2-centos node]# ls
bin  CHANGELOG.md  include  lib  LICENSE  README.md  share

3.环境变量配置

命令如下(参考):

vi /etc/profile 
#你自己的路径 
export PATH=:usr/local/bin:{JAVA_HOME}/bin:/usr/local/jenkins/jenkins_home/ambient/node/bin:$PATH 

4.编辑完成wq保存,查看node版本

命令如下(参考):

source /etc/profile  #更新环境变量
[root@VM-0-2-centos node]# node -v
v12.18.1

5.切换为淘宝镜像

命令如下(参考):

[root@VM-0-2-centos node]# npm config set registry http://registry.npm.taobao.org/

在这里插入图片描述


二、配置Maven

1.准备maven

将 maven 也用 ftp 传到 jenkins 文件夹下,参考上面第一张图片,然后开始配置路径

命令如下(参考):

[root@VM-0-2-centos node]# vi /etc/profile

# 拉到最下面,编写配置(参考)
export PATH=${PATH}:${MAVEN_HOME}/bin
export MAVEN_HOME=/usr/local/jenkins/jenkins_home/ambient/apache-maven-3.8.3  #你自己的路径
export PATH=${PATH}:${MAVEN_HOME}/bin

# wq保存,更新环境变量
[root@VM-0-2-centos node]# source /etc/profile
[root@VM-0-2-centos node]# mvn -v       #查看maven版本

注释:提示没有权限(参考下方命令)!!!

2.无权限报错解决方法

命令如下(参考):

-bash: /usr/local/jenkins/apache-maven-3.8.3/bin/mvn: Permission denied  
# 设置权限,你自己的路径
[root@VM-0-2-centos node]# chmod a+x /usr/local/jenkins/apache-maven-3.8.3/bin/mvn
[root@VM-0-2-centos node]# mvn -v  #再次查看
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /usr/local/jenkins/apache-maven-3.8.3
Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_321/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1127.19.1.el7.x86_64", arch: "amd64", family: "unix"

在这里插入图片描述


三、安装nginx

1.docker下载nginx

注释:不指定版本则会下载最新版

docker pull nginx

2.运行(建议直接查看下方 3启动挂载命令)

docker run -d --name nginx -p 80:80 nginx

在这里插入图片描述

安装参考地址:https://blog.csdn.net/huangjhai/article/details/118854733
安装vim参考地址:https://www.jianshu.com/p/cfc2377b8611

3.启动挂载

docker run --name nginx -d -p 80:80 -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/vue:/usr/share/nginx/html -v /usr/local/nginx/log:/var/log/nginx nginx 

4. 设置容器自动启动

docker update --restart=always nginx

5.Nginx配置文件参考

user root;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';


    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

    server {
	listen       80;
	server_name  www.plmn.club;

	location / {
		root   /usr/share/nginx/html;
		#autoindex on;
		index  index.html index.htm;
	}
	# 配置反向代理,解决跨域问题
	 location /plmn {
		proxy_pass   http://www.plmn.club:8081/plmn;
	}
	
	error_page   500 502 503 504  /50x.html;
	location = /50x.html {
		root   /usr/share/nginx/html;
	}

    }

    server {
	listen       8099;
	server_name  jenkins;
	
	# 解决Jenkins下载超慢问题,利用Nginx代理
	location /download/plugins {
		proxy_pass   http://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins;
	}
	
    }

}

四、安装Jenkins

本次我们演示的是通过 Docker 来拉取 Jenkins 镜像完成操作,不需要的同学可以自己去网上下载 Jenkins 压缩包,手动安装运行(不依赖Docker)

1.利用Docker拉取Jenkins镜像

命令如下(参考):

[root@VM-0-2-centos log]# docker pull jenkins/jenkins:2.326

2.准备文件

在 usr/local/jenkins 目录下创建文件夹:jenkins_home(已创建可忽略)

在这里插入图片描述

3.启动

执行启动命令,限制内存大小,启动后文件会挂载到容器(请直接可以参考下方 三.14 yml文件)

命令如下(参考):

[root@VM-0-2-centos node]# docker run --restart=always -d -p 8099:8080 -e JENKINS_JAVA_OPTIONS="-XX:MaxPermSize=1024m -D java.awt.headless=true" -v /usr/local/jenkins/jenkins_home/:/var/jenkins_home/ -v /usr/local/jenkins/apache-maven-3.8.3:/usr/local/apache-maven-3.8.3 -v /usr/local/jenkins/node:/usr/local/node -u0 --env JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"  --name=jenkins jenkins/jenkins:2.326

docker ps 看一下启动状态即可

4.进入Jenkins容器

命令如下(参考):

[root@VM-0-2-centos node]# docker exec -it eb957f199f67 /bin/bash

由于容器只有核心的运行环境,没有完整的运行系统,所以需要执行以下命令

命令如下(参考):

apt-get update
apt-get install vim  
#由于国外镜像比较慢,我们使用下面的方法安装,已经开始安装的话直接按下Ctrl + C退出
① cp /etc/apt/sources.list /etc/apt/sources.list.bak
② echo 'deb http://mirrors.163.com/debian/ stretch main non-free contrib' > /etc/apt/sources.list
echo 'deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib' >> /etc/apt/sources.list
echo 'deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib' >> /etc/apt/sources.list
③ apt-get update
④ apt-get install libssl-dev
⑤ apt-get install -y libtinfo5 --allow-remove-essential
⑥ apt-get install -y vim

exit 可退出容器

5.登录Jenkins控制台

浏览器访问已启动的容器:IP+端口,等待初始化,密码获取:

命令如下(参考):

cat /usr/local/jenkins/jenkins_home/secrets/initialAdminPassword  #自己的路径

在这里插入图片描述

6.在客户端安装Jenkins插件

在这里插入图片描述

  • Localization: Chinese (Simplified)
  • Maven Integration plugin
  • Pipeline
  • Publish Over SSH
  • Subversion Workspace
  • Cleanup Plugin
  • Folders
  • Gitee

7.初始化慢,插件安装慢?

命令如下(参考):

需要你进入jenkins 的工作目录,打开-----hudson.model.UpdateCenter.xml将 url 中的 
https://updates.jenkins.io/update-center.json
更改为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
是国内的清华大学的镜像地址。
或者更改为http://updates.jenkins.io/update-center.json,即去掉 https 中的 s 

8.上条步骤不是解决下载慢的终极办法,利用Nginx代理做

https://blog.csdn.net/a910196454/article/details/107213325/?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.2&utm_relevant_index=4

9.配置中文

https://blog.csdn.net/zh__quan/article/details/106230100

10.配置Gitee及测试运行

网友总结教程:https://blog.csdn.net/liqing0013/article/details/98031485
官网教程:https://gitee.com/help/articles/4193#article-header10
在这里插入图片描述

11.docker-compose参考(Jenkins配置JDK、NodeJS时需要挂载,否则找不到配置路径)

命令如下(参考):

version: "3.8"
services:
  redis:                     # 服务的名称
    restart: always          # 代表只要Docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/redis:6.0.4     # 指定镜像路径
    container_name: redis    # 指定容器名称
    command: redis-server --port 6379 --requirepass Glf924058449/  --appendonly yes
    ports:
      - 6379:6379        # 指定端口号的映射   

  tomcat:
    restart: always          # 代表只要Docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/tomcat:9.0.0.M27     # 指定镜像路径
    container_name: tomcat    # 指定容器名称
    ports:
      - 8081:8081
    volumes:
      - /usr/local/tomcat/packge:/usr/local/tomcat/webapps      
      - /usr/local/tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml      
      - /usr/local/tomcat/conf/web.xml:/usr/local/tomcat/conf/web.xml
      - /usr/local/tomcat/log:/usr/local/tomcat/logs        # 映射数据卷
      
  jenkins:
    restart: always          # 代表只要Docker启动,那么这个容器就跟着一起启动
    image: jenkins/jenkins:2.326     # 指定镜像路径
    container_name: jenkins    # 指定容器名称
    user: root
    ports:
      - 8099:8080
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock    
      - /usr/local/jenkins/jenkins_home/:/var/jenkins_home/      
      - /usr/local/jenkins/apache-maven-3.8.3:/usr/local/apache-maven-3.8.3   
      - /usr/local/jenkins/node:/usr/local/node      
      - /usr/local/java/jdk1.8.0_321:/home/java/jdk8:rw

12.配置运行Tomcat(利用发布Maven项目配合Tomcat完成后端war包自动化部署)

https://www.cnblogs.com/xuxiaojian/p/9079132.html

注意:所有配置文件,比如tomcat的conf,建议先启动一个空容器,把conf的内容复制到你的宿主机任意地方,然后删除掉容器,这样在你挂载容器配置文件的时候就可以避免发生错误!!!

五、Jenkins所有配置参考

1.Jenkins:系统配置

Jenkins:系统配置

2.Jenkins:全局工具配置

在这里插入图片描述

3.前端配置运行Nginx实现自动化部署:配置文件

在这里插入图片描述

4.后端配置运行Tomcat实现自动化部署:配置文件

在这里插入图片描述

总结

以上就是Docker + Jenkins实战笔记,本文仅仅简单介绍了 Jenkins 及所需环境的安装、配置,比较粗造,而过程中可能会碰到很多问题,可以在下方评论区留言或者自行百度,祝你成功!!!
在这里插入图片描述

Logo

前往低代码交流专区

更多推荐