当前位置: 首页 > news >正文

shell脚本发布docker-nginx vue2 项目示例

docker、git、node.js安装略过。
使git pull或者git push不需要输入密码操作方法
nginx安装在docker容器里面,参见:https://blog.csdn.net/HSJ0170/article/details/128631155

姊妹篇(宿主机nginx,非docker-nginx):shell脚本发布nginx vue2 项目示例

pro_build.sh
注意:#!/bin/bash -ilex,如果jenkins远程ssh登录执行sh脚本,并且jekins安装在docker容器里面,这句代码很有必要。
在这里插入图片描述

#!/bin/bash
who am i
set -e
#当前vue2demo目录
cd /opt/vue2demoecho "拉取gitlib最新代码..."
git status && git pull#if判断其实是多余的,set -e 当$? 不等于0时候已经退出了
if [[ $? -ne 0 ]]
thenecho "拉取gitlib最新代码失败,准备退出"exit 1
fi
echo "拉取gitlib最新代码成功"rm -rf dist/
rm -rf /opt/nginx_volume_data/html/vue2demo/dist/
echo "删除旧的dist打包目录、vue2demo/dist/目录"echo "npm install --> 准备安装依赖..."
npm installecho "npm run build --> 准备构建打包..."
npm run buildecho "准备发布到docker-nginx html 目录..."
mv dist/ /opt/nginx_volume_data/html/vue2demo/echo "发布完毕"

nginx配置文件vue2demo.conf:
路径:/opt/nginx_volume_data/conf/conf.d
在这里插入图片描述

server {listen 8888;server_name  192.168.1.105;charset utf-8;       #proxy_intercept_errors on;#uilocation / {root   /usr/share/nginx/html/vue2demo/dist;index  index.html index.htm;} #serve #服务springboot见文章:https://blog.csdn.net/HSJ0170/article/details/137103193location ^~/api {proxy_set_header   Host             $host;proxy_set_header   X-Real-IP        $remote_addr;proxy_set_header   X-Real-Port      $remote_port;proxy_set_header   X-Forwarded-Proto $scheme;proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;proxy_buffering off;rewrite ^/api/(.*)$ /$1 break;proxy_pass http://192.168.1.105:55530;#启用支持websocket连接proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}}

启动:

#先删除docker-nginx容器
docker rm -f docker-nginx
#重新启动80,8888端口
docker run -p 80:80 -p 8888:8888 --name docker-nginx \
-v /opt/nginx_volume_data/html:/usr/share/nginx/html \
-v /opt/nginx_volume_data/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/nginx_volume_data/conf/conf.d:/etc/nginx/conf.d \
-e TZ=Asia/Shanghai \
-d nginx

相关文章:

shell脚本发布docker-nginx vue2 项目示例

docker、git、node.js安装略过。 使git pull或者git push不需要输入密码操作方法 nginx安装在docker容器里面,参见:https://blog.csdn.net/HSJ0170/article/details/128631155 姊妹篇(宿主机nginx,非docker-nginx)&am…...

【THM】Nmap Basic Port Scans(基本端口扫描)-初级渗透测试

介绍 本房间是Nmap系列的第二个房间(网络安全简介模块的一部分)。 1.Nmap实时主机发现 2.Nmap基本端口扫描 3.Nmap高级端口扫描 4.Nmap后端口扫描 在之前的房间里,我们专注于发现在线系统。到目前为止,我们已经介绍了Nmap扫描的三个步骤: 枚举目标发现活动主机反向-…...

Groovy结合Java在生产中的落地实战

Groovy简介 Groovy是用于Java虚拟机的一种敏捷的动态语言,是一种成熟的面向对象编程语言,又是一种纯粹的脚本语言。Groovy运行在JVM环境上,在语法上兼具java 语言和脚本语言特点,大大简化了语法。同时又具有闭包和动态语言中的其…...

达梦数据库 创建外部表 [-7082]:外部表数据错误.

1:定义 外部表,是指不存在于数据库中的表。通过向达梦提供描述外部表的元数据,可以把一 个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来 进行访问。 外部表的数据存储在操作系统中&#xff0…...

XUbuntu22.04之激活Linux最新Typora版本(二百二十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...

JavaScript简介

目录 概要: 说明: 学习JS的原因: JS可以干什么: 了解JavaScript: 前言: JavaScript的历史: JavaScript与ECMAScript: 如何运行JavaScript以及JavaScrip的特点: …...

使用PaddleX实现的智慧农业病虫检测项目

目录 1. 数据集解压 2.检查数据集的图片是否均可读取 3. 查看数据集的类别信息...

算法学习——LeetCode力扣图论篇1(797. 所有可能的路径、200. 岛屿数量、695. 岛屿的最大面积)

算法学习——LeetCode力扣图论篇1 797. 所有可能的路径 797. 所有可能的路径 - 力扣(LeetCode) 描述 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特…...

【IP组播】PIM-SM的RP、RPF校验

目录 一:PIM-SM的RP 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-SM和静态RP 4.配置动态RP 5.配置Anycast RP 二: RPF校验 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-DM 4.RPF校…...

前端代码规范-命名规范

命名规则 camelCase(小驼峰式命名法 —— 首字母小写)PascalCase(大驼峰式命名法 —— 首字母大写)kebab-case(短横线连接式)Snake(下划线连接式) 项目名称 项目名 全部采用小写方…...

移动端APP测试常见面试题精析

现在面试测试职位,要求非常全面,那么APP测试一般需要哪些技术呢?下面总结了APP测试常见面试题: 1.Android四大组件? Activity:描述UI,并且处理用户与机器屏幕的交互。应用程序中,一个Activity就相当于手…...

报错[Vue warn]: $listeners is readonly. $attrs is readonly.怎么解决?

代码也没有逻辑错误,但是报错 [Vue warn]: $listeners is readonly. $attrs is readonly. 情况1:多处声明了new Vue,解决方案:删除一个,用全局变量引用同一个Vue 情况2:import Vue from Vue;第二个Vue首字…...

android 14 apexd分析(1)apexd bootstrap

Apex的由来,我们都知道普通的apk我们可以通过应用商店playstore等进行更新,apex的引入是google希望也能通过playstore更新bin文件.so etc配置文件等类型文件. 这些文件的安装实际通过apexd来进行,现在我们来解析一下apexd, apexd的启动分为两个阶段,bootstrap和普通apexd启…...

C++ 中的 vector 的模拟实现【代码纯享】

文章目录 C 中的 vector 模拟实现1. vector 的基本概念2. vector 的基本操作3. vector 的模拟实现4.代码纯享5. 总结 C 中的 vector 模拟实现 在 C 中,vector 是一个非常重要的容器,它提供了动态数组的功能。在本篇博客中,我们将尝试模拟实现…...

UE4 方块排序动画

【动画效果】 入动画: 出动画: 【分析】 入动画:方块动画排序方式为Z字形,堆砌方向为X和Y轴向 出动画:方块动画排序方式为随机 【关键蓝图】 1.构建方块砌体 2.入/出动画...

网络与并发编程(一)

并发编程介绍_串行_并行_并发的区别 串行、并行与并发的区别 串行(serial):一个CPU上,按顺序完成多个任务并行(parallelism):指的是任务数小于等于cpu核数,即任务真的是一起执行的并发(concurrency):一个CPU采用时间…...

超详细工具Navicat安装教程

Navicat是一款功能强大的数据库管理工具,可用于管理多种类型的数据库,包括MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL等。以下是Navicat工具的一些主要特点和功能: 一.功能介绍 跨平台支持 多种数据库支持 直观的用户界面 数据…...

RN在android/ios手机剪切图片的操作

之前写过一个React Native调用摄像头画面及拍照和保存图片到相册全流程但是这个仅限于调用摄像头拍照并保存图片,今天再写一个版本的操作,这个博客目前实现的有三点操作: 调用摄像头拍照对照片进行剪切从相册选取图片 功能上面来说有两点: 点击按钮可以对摄像头进行拍照,拍完照…...

C语言 | Leetcode C语言题解之第6题Z字形变换

题目&#xff1a; 题解&#xff1a; char * convert(char * s, int numRows){int n strlen(s), r numRows;if (r 1 || r > n) {return s;}int t r * 2 - 2;char * ans (char *)malloc(sizeof(char) * (n 1));int pos 0;for (int i 0; i < r; i) { // 枚举矩阵的…...

C 回调函数的两种使用方法

对回调&#xff08;callback&#xff09;函数的一点粗陋理解&#xff0c;在我小时候&#xff0c;隔壁村有家月饼小作坊&#xff08;只在中秋那段时间手工制作一些月饼出售&#xff0c;后来好像不做了&#xff09;&#xff0c;做出的月饼是那种很传统很经典的款式&#xff0c;里…...

TrollInstallerX终极指南:3分钟搞定iOS 14-16.6.1 TrollStore安装

TrollInstallerX终极指南&#xff1a;3分钟搞定iOS 14-16.6.1 TrollStore安装 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX是当前iOS 14.0至16.6.1设…...

PIC18F4550微控制器实现USB大容量存储设备设计

1. USB大容量存储设备设计概述USB大容量存储设备&#xff08;Mass Storage Device&#xff0c;MSD&#xff09;已成为现代数字生活中不可或缺的组成部分。从U盘到移动硬盘&#xff0c;这类设备的核心都是基于USB Mass Storage Class协议实现的。本文将深入探讨如何利用PIC18F45…...

视频质量评估技术解析与ClearView系统实践

1. 视频质量评估的行业现状与技术痛点 在数字电视和流媒体爆发式增长的今天&#xff0c;视频质量评估&#xff08;Video Quality Assessment, VQA&#xff09;已成为设备制造商和内容提供商的核心竞争力指标。我从事视频处理算法开发已有八年&#xff0c;亲眼见证了这个领域从依…...

SincNet实战:用PyTorch复现说话人识别,并探讨其对抗攻击的脆弱性与防御思路

SincNet实战&#xff1a;从说话人识别到对抗防御的全链路技术解析 当声纹识别系统在智能门锁中误将陌生人识别为业主时&#xff0c;背后可能是精心设计的音频对抗样本在作祟。SincNet作为直接从原始波形学习的CNN变体&#xff0c;其带通滤波器设计带来的可解释性优势&#xff0…...

Weaviate向量数据库实战:从官方示例到RAG应用开发全解析

1. 项目概述&#xff1a;从代码仓库到向量数据库的实战指南如果你最近在关注大语言模型应用开发&#xff0c;或者想给自己的应用加上一个“记忆大脑”&#xff0c;那你大概率已经听说过向量数据库了。在众多选型中&#xff0c;Weaviate以其开源、易用和强大的功能脱颖而出。但当…...

别再复制粘贴了!手把手教你从零搭建STM32F429 MDK5工程模板(附完整源码包)

从零构建STM32F429工程模板&#xff1a;避开新手90%的踩坑点 第一次拿到STM32F429开发板时&#xff0c;我盯着满屏的英文文档和零散的教程发愣——网上能找到的要么是过时的Keil4配置指南&#xff0c;要么直接丢给你一个现成工程文件。这种"复制粘贴式"的学习让我在后…...

第四部分-Docker网络与存储——18. 自定义网络

18. 自定义网络 1. 自定义网络概述 自定义网络允许用户根据需求创建具有特定配置的网络&#xff0c;相比默认的 bridge 网络&#xff0c;提供了更好的隔离性、DNS 解析和灵活性。 ┌────────────────────────────────────────────…...

系统设计:负载均衡器

原文&#xff1a;towardsdatascience.com/system-design-load-balancer-9a3582176f9b 简介 大型分布式应用每秒处理超过数千个请求。在某个时刻&#xff0c;处理单个机器上的请求变得不再可能。这就是为什么软件工程师关心水平扩展&#xff0c;即整个系统持续地组织在多个服务…...

如何用nmrpflash拯救你的Netgear路由器:终极免费救援指南

如何用nmrpflash拯救你的Netgear路由器&#xff1a;终极免费救援指南 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 你的Netgear路由器突然变成"砖头"了吗&#xff1f;固件升级失败、系统崩溃…...

为什么向量空间必须是“无限”的?

为什么向量空间必须是“无限”的? 为什么说运算结果总是在 V 中? 向量空间的定义本质上就是划定了一个“无论你怎么加、怎么乘,都逃不出这个圈子”的集合。那么为什么还分V,U 子集呢,这样讲来,不就是一个向量空间包括一切的意思吗? 当数学家说“地板是一个向量空间(子…...