干巴爹兔的博客 干巴爹兔的博客
首页
  • 前端文章

    • JavaScript
    • HTML
    • Vue
  • 学习笔记

    • JavaScript教程
    • React学习笔记
    • Electron学习笔记
  • 开源项目

    • cloud-app-admin
    • 下班了吗Vscode插件
    • Subversion变更单插件
  • Server

    • Django
  • 学习笔记

    • MySQL学习笔记
  • 运维

    • 服务器部署
    • Linux
  • 日常学习

    • 学习方法
关于
收藏
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

干巴爹兔

卑微的前端打工人
首页
  • 前端文章

    • JavaScript
    • HTML
    • Vue
  • 学习笔记

    • JavaScript教程
    • React学习笔记
    • Electron学习笔记
  • 开源项目

    • cloud-app-admin
    • 下班了吗Vscode插件
    • Subversion变更单插件
  • Server

    • Django
  • 学习笔记

    • MySQL学习笔记
  • 运维

    • 服务器部署
    • Linux
  • 日常学习

    • 学习方法
关于
收藏
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 服务器部署

    • Ubuntu搭建ftp服务
    • Ubuntu18.04部署django3.x
    • 部署网站到GitHub或者码云
    • 部署node服务到阿里云
    • Jenkins构建若依前后端分离容器镜像
      • 阿里云Ubuntu20.04部署Docker环境若依框架(Vue前后端分离版)
      • 解决django3.X登录不进admin的问题
    • Linux

    • 学习方法

    • 技术
    • 服务器部署
    干巴爹兔
    2021-02-25
    目录

    Jenkins构建若依前后端分离容器镜像

    # 开头

    承接上一个文章阿里云Ubuntu20.04部署Docker环境若依框架(Vue前后端分离版) (opens new window),在利用Docker部署了前后端的项目后,我希望能更进一步,利用Jenkins配合Docker更进一步简化部署流程,于是整合成一篇文章,本文参考以下文章,部分脚本根据自己的项目有所调整:

    阿里云Ubuntu20下安装Jenkins (opens new window)

    springBoot集成Jenkins,实现自动化部署 (opens new window)

    [手把手系列之] Jenkins+Docker自动化部署vue项目 (opens new window)

    jenkins构建出现permission-denied (opens new window)

    Ubuntu的Linux如何将用户加到sudoers中 (opens new window)

    # 一、安装Jenkins

    # 1、安装JDK

    #安装JDK8,依次执行下面的命令
    sudo apt update
    sudo apt install openjdk-8-jdk
    #安装完成后,输入
    java -version
    #出现如下图版本信息,说明已经安装
    
    1
    2
    3
    4
    5
    6

    img

    # 2、下载Jenkins的deb文件

    直接使用Jenkins官网提供的源安装命令,会比较慢,可以直接用wget命令下载deb文件

    #命令类似于
    wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/debian-stable/jenkins_2.249.3_all.deb
    
    1
    2

    # 3、安装Jenkins

    #直接用以下命令安装,会报依赖错误,也可能会报找不到jdk的错误
    dpkg -i jenkins_2.249.3_all.deb
    
    1
    2

    img

    可通过以下命令解决依赖问题,重新安装:

    #解决依赖问题(据说下面这个命令得跟在上面install失败的命令后面执行,也就是先install报错了,再输入这个命令解决问题,大概是有关联关系吧)
    sudo apt-get -f -y install
    #解决JDK找不到的问题(刚开始用JDK11就出现JDK找不到的问题,建立软链接"ln -s <java文件安装路径> <Jenkins扫描java文件的路径>"),
    ln -s /usr/local/lib/java/jdk-11.0.9/bin/java /usr/bin/java
    #使用下面这个命令可以看到Java文件安装路径
    type -p java
    #重新安装
    dpkg -i jenkins_2.249.3_all.deb
    
    1
    2
    3
    4
    5
    6
    7
    8

    img

    # 4、修改端口

    我的配置文件路径是 /etc/default/jenkins,找到HTTP_PORT,修改端口

    #Jenkins端口默认8080,这里改成8082不跟其他项目冲突
    HTTP_PORT=8082
    
    1
    2

    # 5、一些相关命令

    #启动Jenkins
    systemctl start jenkins
    #关闭Jenkins
    systemctl stop jenkins
    #重启Jenkins
    systemctl restart jenkins
    #查看Jenkins状态
    systemctl status jenkins
    
    1
    2
    3
    4
    5
    6
    7
    8

    # 6、修改update源

    (1)修改/var/lib/jenkins/hudson.model.UpdateCenter.xml文件

    <url>http://mirror.xmission.com/jenkins/updates/update-center.json</url>
    
    1

    (2)修改/var/lib/jenkins/updates/default.json

    把所有
    https://updates.jenkins.io/download
    替换成
    https://mirrors.tuna.tsinghua.edu.cn/jenkins
    记得改完后拿个链接在浏览器上试试能不能下载
    
    1
    2
    3
    4
    5

    # 二、安装maven

    1. sudo apt update
      
      1
    2. sudo apt install maven #安装maven,默认安装路径为/usr/share/maven
      
      1
    3. 添加maven环境配置,在/etc/profile.d文件夹下新建配置文件maven.sh

      vim /etc/profile.d/maven.sh
      
      1

      maven.sh内容如下:

      export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 
      export M2_HOME=/usr/share/maven
      export MAVEN_HOME=/usr/share/maven
      export PATH=${M2_HOME}/bin:${PATH}
      
      1
      2
      3
      4
    4. 加载环境配置

      source /etc/profile.d/maven.sh
      
      1
    5. maven本地仓库初始化,在用户家目录下会生成一个.m2的文件夹

      sudo mvn help:system
      
      1
    6. 拷贝setting.xml到.m2文件夹下

      cd ~/.m2
      cp ${MAVEN_HOME}/conf/settings.xml .
      
      1
      2
    7. 修改settings.xml文件,配置阿里源

      sudo vim settings.xml
      
      1
      <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
      </mirror>
      
      1
      2
      3
      4
      5
      6
    8. 测试

      mvn -v
      
      1

    # 三、启动Jenkins

    浏览器中输入ip+端口号就可以访问了会看到这样:

    img

    按照步骤操作

    img

    失败不要紧,重试就好

    img

    # 四、Jenkins部署前端项目

    点击系统管理

    img

    img

    img

    img

    等待安装好

    选择安装nodejs版本,我自己选的是12的最后一个版本,大家选自己喜欢的就好了,但是最好不要低于12

    img

    img

    img

    img

    准备一个vue项目,并上传至码云或GitHub

    新建任务

    img

    这里我取的名字是前端项目,和原文不太一样,和后面的脚本有关系

    img

    img

    img

    img

    我自己的Shell脚本:

    echo $PATH
    node -v
    npm -v
    npm install
    npm run build:prod
    echo '打包成功'
    rm -r /home/fronted/dist/
    cp -r /var/lib/jenkins/workspace/前端项目/dist/. /home/fronted/dist
    echo '配置Docker镜像'
    docker stop fronted
    docker rm fronted
    docker rmi fronted
    cd /home/fronted/
    docker build -t fronted .
    docker run -d -p 80:80 -v /home/ruoyi/uploadPath:/home/ruoyi/uploadPath --name fronted fronted
    echo '部署镜像成功'
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    上面的脚本大致流程就是拉去后进行build操作,打包好后删除原有目录的文件,将打包好的复制过去,然后提供Dockerfile文件进行打包容器

    Dockerfile:

    FROM nginx
    USER root
    ADD default.conf /etc/nginx/conf.d
    ADD dist /usr/share/nginx/html/
    RUN chmod 775 -R /usr/share/nginx/html
    expose 80
    
    1
    2
    3
    4
    5
    6

    default.conf

    server {
            listen       80;
            server_name  IP;	# 可以用服务器ip代替
            
            location / {
                root   /usr/share/nginx/html/;
                index  index.html index.htm index login;
            }
            location /prod-api/ {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://IP:PORT/;		# 可以用服务器ip代替
            }
            # 这个是我自己部署的图片静态资源,可以不加
            location /profile {
                alias   /home/ruoyi/uploadPath;
                autoindex on;
            }
         }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    构建项目

    点击立即构建

    img

    等待部署

    点击这个小圆可以看控制台输出

    img

    img

    部署成功就可以访问了

    # 五、Jenkins部署后端项目

    进入Jenkins后,添加任务

    img

    选取maven项目,如果没有maven项目的话,可以去插件管理中去下载,在集成这部分前,服务器上要安装好git,maven,git版本最好大于1.7,以及jdk,然后在Jenkins中的全局工具配置中配置jdk以及maven的路径,我的路径是在/usr/lib/jvm下,可以参考ubuntu下查找jdk安装位置 (opens new window)这篇文章进行查找,如果你和我的系统JDK版本都一样就在差不多的位置了

    img

    创建完任务后:进入任务配置

    img

    img

    img

    img

    Jenkins将代码从你配的分支上拉下来,然后copy到指定执行的文件夹内,然后执行启动,shell脚本,这里是我的Shell脚本,根据之前一篇文章构建的阿里云Ubuntu20.04部署Docker环境若依框架(Vue前后端分离版) (opens new window):

    Shell

    echo '打包成功,开始复制文件'
    rm -r /home/ruoyi/ruoyi-admin.jar
    cp -r /var/lib/jenkins/workspace/后端项目/ruoyi-admin/target/ruoyi-admin.jar /home/ruoyi
    echo '构建镜像'
    docker stop backend
    docker rm backend
    docker rmi backend
    cd /home/ruoyi/
    docker build -t backend .
    docker run -d -p 8080:8080 -v /home/ruoyi/uploadPath:/home/ruoyi/uploadPath --name backend backend
    echo '构建成功'
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    大致意思就是删除旧的构建,将Jenkins打包好的jar文件复制到指定的位置,这个后端项目是我的Jenkins的项目名称,每个人的都不一样,然后使用Dockerfile构建镜像并运行

    最后保存这个配置

    最后一步,点击立即构建即可

    # 六、一些问题

    遇到jenkins构建出现permission-denied

    1.修改jenkins的用户与组

    cd /var/lib
    chown -R root:root jenkins
    # 重启jenkins服务
    service jenkins restart
    
    1
    2
    3
    4

    2.将Jenkins加入sudoers中

    查看用户组:cat /etc/group
    
    查看用户:cat /etc/shadow
    
    查看用户所属组:groups 用户名
    
    将用户加到某一个组中:adduser 用户名 组名
    
    创建用户:sudo adduser howe
    安装提示输入密码即可;
    
    删除用户:sudo userdel howe
    
    使用visudo将用户加到sudoers中去
    只有root用户才能使用visudo,因此先执行sudo su切换到root用户下;
    sudo su
    visudo
    再root ALL=(ALL:ALL) ALL下一行加上对应用户
    如howe ALL=(ALL:ALL) ALL
    按照提示保存即可;保存的文件名就是/etc/sudoers.tmp
    
    尽量不要去直接修改/etc/sudoers文件
    因为/etc/sudoers是只读文件,更改权限(chmod)可能对系统造成影响;
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    删除某些文件夹下的文件会报权限不足:

    切换至root用户,对这个文件夹chmod 777 文件夹就可以了

    编辑 (opens new window)
    #Linux
    上次更新: 2022/08/26, 15:52:02
    部署node服务到阿里云
    阿里云Ubuntu20.04部署Docker环境若依框架(Vue前后端分离版)

    ← 部署node服务到阿里云 阿里云Ubuntu20.04部署Docker环境若依框架(Vue前后端分离版)→

    最近更新
    01
    使用Vscode开发一个小插件
    10-21
    02
    Vscode插件配置项监听
    10-18
    03
    使用has属性构造必填效果
    10-14
    更多文章>
    Theme by Vdoing | Copyright © 2020-2023 互联网ICP备案: 闽ICP备18027236号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式