jenkins+docker+nginx+nodejs持续集成部署vue前端项目

yizhihongxing

Jenkins+Docker+nginx+nodejs持续集成部署Vue前端项目

概述

这篇攻略主要讲解如何使用Jenkins、Docker、nginx和nodejs实现持续集成和部署Vue前端项目。下文将对Jenkins、Docker、nginx以及nodejs的相关概念、安装和使用作详细的介绍,并通过两个示例说明如何实现持续集成和部署。

Jenkins简介

Jenkins是一种基于Java的开源自动化服务器,可以实现自动化构建、测试和部署。在本攻略中,Jenkins用来管理代码仓库、执行构建、测试和部署任务。

Docker简介

Docker是一种开源容器技术,可以将应用及其依赖打包为一个容器,方便部署和移植。在本攻略中,Docker用来打包和运行Vue前端项目。

nginx简介

nginx是一种流行的高性能Web服务器和反向代理服务器,可以实现负载均衡、缓存、日志等功能。在本攻略中,nginx用来反向代理Vue前端项目的请求。

nodejs简介

nodejs是一种基于Chrome V8引擎的JavaScript运行环境,可以方便地开发和部署Web应用程序。在本攻略中,nodejs用来安装和运行Vue前端项目的依赖和启动应用程序。

安装Jenkins

  1. 在Ubuntu上安装Jenkins:

$ sudo apt update
$ sudo apt install openjdk-8-jdk
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
$ sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt update
$ sudo apt install jenkins

  1. 启动Jenkins服务:

$ sudo systemctl start jenkins

  1. 打开Jenkins Web管理界面,设置管理员密码,安装推荐插件,创建管理员用户。

安装Docker

  1. 在Ubuntu上安装Docker:

$ sudo apt update
$ sudo apt install docker.io

  1. 将当前用户加入docker用户组:

$ sudo usermod -aG docker $USER

配置nginx

  1. 安装nginx:

$ sudo apt update
$ sudo apt install nginx

  1. 配置nginx反向代理:

server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Cache-Control "no-store";
add_header Pragma "no-cache";
expires -1;
gzip_static on;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
gzip_vary on;
}
}

安装nodejs

  1. 在Ubuntu上安装nodejs:

$ sudo apt update
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs

示例一:基于简单的Vue前端项目的持续集成和部署

以下为一个简单的Vue前端项目的目录结构:

my-vue-app/
├── public/
│   ├── index.html
│   └── ...
├── src/
│   ├── main.js
│   ├── router.js
│   └── ...
├── package.json
└── ...
  1. 将该项目上传至GitHub,设置Jenkins的Webhook。

  2. 在Jenkins中的项目配置页面中配置参数化构建:

npm install
npm run build
docker build -t my-vue-app .
docker run -d -p 8080:80 my-vue-app

  1. 配置Jenkins的持续集成流水线:

node {
stage('Build') {
def image = docker.build("my-vue-app")
}
stage('Deploy') {
docker.withRegistry('https://registry.hub.docker.com', 'docker-hub') {
image.push('latest')
}
sh 'docker rm -f my-vue-app || true'
sh 'docker run -d -p 8080:80 --name my-vue-app my-vue-app'
}
}

  1. 编写Dockerfile:

FROM nginx:alpine
COPY dist/ /usr/share/nginx/html

  1. 编写Jenkinsfile:

pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CleanCheckout']],
submoduleCfg: [],
userRemoteConfigs: [[url: 'https://github.com/username/my-vue-app.git']]])
}
}
stage('Test') {
steps {
sh 'npm install'
sh 'npm run test'
}
}
stage('Build') {
steps {
sh 'npm run build'
sh 'docker build -t my-vue-app .'
}
}
stage('Deploy') {
environment {
registry = 'docker-hub'
registryCredential = 'docker-hub-credential'
dockerImage = ''
}
steps {
script {
docker.withRegistry( '', registryCredential ) {
dockerImage = docker.build( "my-vue-app" )
dockerImage.push()
}
sh "docker stop my-vue-app || true && docker rm my-vue-app || true"
sh "docker run -d --name my-vue-app -p 80:80 ${dockerImage.imageName}"
}
}
}
}
post {
always {
cleanWs()
sh "docker rmi -f $(docker images -qf dangling=true) || true"
}
}
}

示例二:基于复杂的Vue前端项目的持续集成和部署

在示例一的基础上,考虑更复杂的Vue前端项目,增加了一个使用Node.js和Express构建的后端API服务器。该项目的目录结构如下:

my-vue-app/
├── public/
│   ├── index.html
│   └── ...
├── src/
│   ├── main.js
│   ├── router.js
│   └── ...
├── api/
│   ├── server.js
│   ├── package.json
│   └── ...
├── package.json
└── ...
  1. 将该项目上传至GitHub,设置Jenkins的Webhook。

  2. 在Jenkins中的项目配置页面中配置参数化构建:

npm install
npm run build
docker build -t my-vue-app .
docker build -t my-api-server ./api
docker network create my-network
docker run -d --name my-api-server --network my-network my-api-server
docker run -d --name my-vue-app --network my-network -p 8080:80 my-vue-app

  1. 配置Jenkins的持续集成流水线:

pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CleanCheckout']],
submoduleCfg: [],
userRemoteConfigs: [[url: 'https://github.com/username/my-vue-app.git']]])
}
}
stage('Test') {
steps {
sh 'npm install'
sh 'npm run test'
}
}
stage('Build') {
steps {
sh 'npm run build'
sh 'docker build -t my-vue-app .'
sh 'docker build -t my-api-server ./api'
}
}
stage('Deploy') {
steps {
sh 'docker network rm my-network || true'
sh 'docker network create my-network'
sh 'docker rm -f my-api-server || true'
sh 'docker run -d --name my-api-server --network my-network my-api-server'
sh 'docker rm -f my-vue-app || true'
sh 'docker run -d --name my-vue-app --network my-network -p 8080:80 my-vue-app'
}
}
}
post {
always {
cleanWs()
sh "docker rmi -f $(docker images -qf dangling=true) || true"
}
}
}

  1. 编写Dockerfile:

```
# Vue Frontend
FROM nginx:1.13-alpine as frontend
COPY dist/ /usr/share/nginx/html

# API Server
FROM node:12-alpine as api
WORKDIR /app
COPY api/package.json .
RUN npm install
COPY api .
EXPOSE 3000
CMD ["node", "server.js"]
```

  1. 编写Jenkinsfile,同示例一。

总结

以上就是如何使用Jenkins、Docker、nginx和nodejs实现持续集成和部署Vue前端项目的完整攻略,包括相关概念、安装和使用介绍以及两个示例的说明。通过这些步骤,您可以为您的Vue前端项目设置自动化构建、测试和部署流水线,提高开发和部署效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jenkins+docker+nginx+nodejs持续集成部署vue前端项目 - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • 详解mpvue开发小程序小总结

    详解mpvue开发小程序小总结 什么是mpvue mpvue是一种基于 Vue.js 的小程序前端框架,它能够将Vue.js中的组件化开发、模块化、路由等特性也带到小程序的开发中,大大提高了小程序的开发效率。 mpvue可以利用Vue.js的生态系统,包括Vuex、Vue-router以及其他大量的插件和库,同时也兼容小程序的原生API和组件。mpvue还提…

    Vue 2023年5月27日
    00
  • vue编译打包本地查看index文件的方法

    当我们使用Vue进行项目开发时,我们需要编译打包项目以便在浏览器环境中运行。但是,对于有些开发者来说,直接在浏览器中查看页面效果并不够方便,因此我们需要一种方法能够让我们在本地直接查看打包后的index文件效果。下面是具体的步骤: 步骤一:安装http-server http-server是一个简单的零配置命令行HTTP服务器,它可以让我们在本地快速启动静态…

    Vue 2023年5月28日
    00
  • Vue中的过滤器(filter)详解

    Vue中的过滤器(Filter)详解 什么是过滤器(Filter)? 过滤器(Filter)是Vue.js提供的一种可复用功能的方法,用于对数据的格式化处理。 在Vue.js的模板语法中, 可以用管道符(|)来应用过滤器。管道符前面是要过滤的数据项,管道符后面是过滤器的名称。 例如: <div>{{message | capitalize}}&l…

    Vue 2023年5月27日
    00
  • 新手快速入门JavaScript装饰者模式与AOP

    一、JavaScript装饰者模式 什么是装饰者模式 装饰者模式是一种结构型的设计模式,它可以在运行时动态地给对象添加额外的行为,而不是通过修改类的定义或者继承来实现扩展。在实际开发中,装饰者模式常常被用来实现切面编程(AOP)和链式调用,以及对现有类的功能增强、聚合、缓存等实现。 装饰者模式的优缺点 优点 装饰者模式允许动态地添加功能,比继承更加灵活。 装…

    Vue 2023年5月28日
    00
  • SpringBoot校园综合管理系统实现流程分步讲解

    下面我将详细讲解“SpringBoot校园综合管理系统实现流程分步讲解”的完整攻略。 一、项目介绍 在这个部分,我们可以简要介绍一下该项目的背景和目的,以及使用的开发工具和框架等相关内容。 二、项目环境搭建 在这个部分,我们需要介绍如何搭建项目所需的环境,以及如何准备开发所需要的依赖库及配置文件等。 三、项目结构说明 在这个部分,我们需要详细介绍整个项目的结…

    Vue 2023年5月28日
    00
  • Vue.js和Vue.runtime.js区别浅析

    Vue.js和Vue.runtime.js区别浅析 在学习 Vue.js 时,我们经常听到“Vue.js”和“Vue.runtime.js”这两个术语。这两个概念的区别是什么呢?在本文中,我们将对此进行深入探讨。 Vue.js Vue.js 是一个创建 Web 应用程序的开源 JavaScript 框架。Vue.js 的核心是一个响应式的数据绑定系统和一个组…

    Vue 2023年5月29日
    00
  • Vue的模板语法以及实战案例

    关于 Vue 的模板语法以及实战案例的完整攻略,以下是具体的讲解: Vue 的模板语法 Vue 的模板语法采用了类似于 HTML 的语法,通过将模板中的标签和属性绑定到数据模型中实现了动态渲染页面的效果。具体来说,Vue 的模板语法主要包括以下几个方面: 支持的指令 v-if:条件语句,根据表达式的值选择是否渲染元素。 v-for:循环语句,用于渲染列表或集…

    Vue 2023年5月27日
    00
  • springboot vue测试平台前端项目查询新增功能

    下面是“springboot vue测试平台前端项目查询新增功能”的完整攻略: 1. 确定功能需求 在开始开发之前,我们需要先明确这个功能的具体需求,具体包括接口需要传递的参数、响应数据格式等。例如,我们需要查询某个商品的销售数据,请求需要传递该商品的ID,响应数据包括该商品的销售数量、销售金额等信息。 2. 新增前端页面及接口 首先,我们需要在前端新增一个…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部