从零实现DevOps(六):Jenkins+GitLab+Docker+Nginx自动化部署前端Vue项目

在上两篇文章中,我们分别演示了 用Jenkins+GitLab实现 从本地环境和远程服务器 去部署SpringBoot项目。众所周知,现在的软件开发主流趋势是前后端分离,后端开发人员负责数据处理,前端负责页面展示。既然分离了,那么前后端就都需要部署后才可以使用。这篇文章就以Vue项目为例,实现本地环境和远程环境自动化部署Vue项目。

一、前置条件

1、硬件需求

两台Centos7操作系统(虚拟机或者主机都可以)

2、软件需求

2.1 主服务器 安装Jenkins

Jenkins安装教程:https://www.toutiao.com/article/7251905396581859843/

2.2 主服务器和远程服务器 安装Node

Centos7环境变量配置教程:https://www.toutiao.com/article/7251513478639485479/

2.3 Jenkins安装Node插件

  1. 点击Jenkins首页中的Manage Jenkins,进入系统设置
  2. 点击Plugins,进入插件中心 在这里插入图片描述
  3. 选择Available Plugins,搜索NodeJS,勾选后,点击Install without restart(安装无需重启)
    在这里插入图片描述
  4. 等待安装完毕后返回首页
    在这里插入图片描述

2.4 Jenkins配置Node环境变量

  1. 点击Manage Jenkins,点击Tools(有些版本的jenkins也叫Global Config),进入工具配置
  2. 往下拉找到NodeJS,点击新增NodeJS
  3. 取消勾选Install automatically,用我们自己的Node版本
  4. 新增NodeJS内容,Name随便取,安装路径用的是自己配置的node路径 在这里插入图片描述
  5. 点击保存返回首页!!!

2.5 前端项目已上传至GitLab中

二、Jenkins本地环境部署Vue

1、构建前操作

除构建外,其他的操作流程与上两篇部署SpringBoot完全相同:

包含以下操作:

  1. 创建流水线
  2. 源码管理(配置项目git地址和分支)
  3. 构建触发器(配置触发条件和Webhooks)

参考文章:https://www.toutiao.com/article/7254042705716593164

2、Build Steps

  1. 点击增加构建步骤,选择“Execute NodeJS script”,从“NodeJS Installation”中选择我们刚才添加的Node版本,其他的默认即可,不需要改动
    在这里插入图片描述

  2. 继续往下点击增加构建步骤,选择“Execute shell”,这一项是在服务器上执行的命令,包含如下:

    (1)指定bash为脚本指令

    (2)npm下载前端依赖

    (3)Vue项目打包

    (4)将打包后的“dist文件夹”复制到我们自建的目标位置

    代码为:

    #!/bin/bash
    
    # 刷新环境变量
    source ~/.bash_profile
    
    # 安装依赖
    npm install
    # 打包为dist文件夹
    npm run build
    
    # 复制dist文件夹中的内容到指定位置
    cp -r dist/ /data/vue
    

在这里插入图片描述

  1. 保存回首页,点击“Build Now”,查看构建是否正常运行,然后去服务器上,查看指定目录中,是否已经把打包好的dist文件夹里边的东西复制过来

    构建完毕: 在这里插入图片描述
    控制台显示Success,构建成功:
    在这里插入图片描述
    打包后的文件也复制成功:
    在这里插入图片描述

3、Docker安装nginx映射文件(index.html)

输入命令即可:

docker run \
-p 8002:80 \
--name vue-test \
--restart=always \
-v /data/vue:/usr/share/nginx/html \
-d nginx:latest

解释一下:

  • -p:容器外部端口号对应容器内部端口号,我们访问服务器的8002即访问的容器内部的80端口
  • —name:容器名称
  • –restart=always:遇到问题自动重启
  • -v:容器外部挂载文件,这里是重点,在nginx的默认配置文件中,当访问到80端口时,会自动跳转到“/usr/share/nginx/html/index.html”文件上,所以我们才需要把本地刚才打包后的内容,与容器内部做一个外链挂载
  • -d:容器在后台运行

容器启动成功:
在这里插入图片描述

4、测试效果

访问:http://192.168.1.11:8002/
在这里插入图片描述

三、远程服务器部署

将Vue项目部署到远程服务器,与刚才的本地部署有两处不同:

  1. Execute shell”这个模块中,不再需要复制dist文件夹,只需要安装依赖和打包即可

    #!/bin/bash
    
    # 刷新环境变量
    source ~/.bash_profile
    
    # 安装依赖
    npm install
    # 打包为dist文件夹
    npm run build
    
  2. 流水线配置中拉到最后,找到“构建后操作”,点击“增加构建后操作部署”,找到“Send build artifacts over SSH”并点击,填写如下内容 在这里插入图片描述
    (1)Transfers:需要发送的文件。这里的执行路径是“/root/.jenkins/workspace/项目名称”下,在你用Npm命令打包完成后,会生成dist文件夹。所以,这里只需要填写“**dist/****”即可,这样就能把dist文件夹中的所有内容全部复制到远程服务器”。

    (2)Remove prefix:需要移除的目标前缀。不需要把dist文件夹也传过去,所以把dist文件夹移除掉即可,只发送文件夹中的内容即可。

    (3)Remote directory:目标文件夹。这里就是你的dist文件夹中内容发送到远程服务器的位置。而且这个位置也是Docker Nginx命令挂载的位置。

    (4)Exec command:到达远程服务器后执行的命令,不能为空,随便填写一下即可。

  3. 远程服务器同样执行Docker命令,去映射本地”index.html”路径

docker run \
-p 8002:80 \
--name vue-test \
--restart=always \
-v /data/vue:/usr/share/nginx/html \
-d nginx:latest
  1. 测试效果
    访问:http://192.168.1.12:8002/ 在这里插入图片描述

四、总结

本文讲解了在Jenkins服务器和远程服务器上自动化部署前端Vue项目的过程。功能不难,但是也确实需要自己上手去做才可以实现。最近项目紧,有时间的话,我会继续更新用DockerFile、Docker Compose或者Docker Swam等方式继续实现自动化部署的工作,感谢大家支持!

所有你想象的一切,皆是现实!
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值