Docker:Docker搭建Jenkins并共用宿主机Docker部署服务(六)跨服务器远程部署前端服务

news/2025/2/8 9:23:44/文章来源:https://www.cnblogs.com/nhdlb/p/18703640

前言

继续完成跨服务器远程部署前端服务,Jenkins的搭建与插件安装可以观看上一篇文章:https://www.cnblogs.com/nhdlb/p/18561435

配置SSH远程服务器连接

这里需要安装 SSH 连接的插件,可以观看上一篇文章进行安装。

开始配置SSH连接

保存!!

新建视图

方便将整个项目的前端和后端整合起来

新建任务

选择视图

创建项目(任务)

任务配置

项目结构

这里我先介绍下项目结构,方便大家对后续操作的理解

我们要做的是远程服务器自动部署,所以这个项目内的Dockerfile、docker-compose.yml、nginx-docker.conf要放到远程服务器的目录下,后面会讲,目前大家不要纠结这几个文件。

配置参数化构建

这里配置参数的作用是后续shell脚本可以根据参数生成镜像和容器

配置项目地址

配置构建日志名称

自定义命名

引用参数构建命名

配置Shell脚本

增加构建步骤

首先配置前端打包构建命令

 

#!/bin/bash# 判断上条命令是否执行成功,当执行失败的时候显示错误信息,并停止向下执行
function pauseErr(){if [ $? -ne 0 ];thenecho "命令执行失败,终止shell脚本运行"#当上一条命令执行失败后,直接退出脚本,阻止脚本向下执行exit 1fi
}# 保存旧的IFS值
#OLD_IFS=$IFS
# 设置IFS为逗号
#IFS=','
# 将字符串分割成数组
#echo "########## 读取参数构建信息 #####################"
#read -ra ports <<< "$module_port"
# 恢复IFS为旧值
#IFS=$OLD_IFS# 获取名称
module_name=${module_port%%/*}
echo "########## 名称 : $module_name  #####################"
# 获取端口
module_port=${module_port##*/} 
echo "########## 端口 : $module_port  #####################"echo "########## 清除npm缓存 并 取消ssl验证 #####################"
# 清除npm缓存
#npm cache clean --force
# 取消ssl验证
npm config set strict-ssl false
# 更改淘宝源
#npm config set registry http://registry.npm.taobao.org 
pauseErrecho "########## 下载依赖 并 构建服务 #####################"
#下载依赖 并 构建服务
npm install --registry=https://registry.npm.taobao.org && npm run build
pauseErr

然后再增加一条构建步骤,这次选择 Send files or execute commands over SSH 

 

远程服务器环境

目录结构

Dockerfile

FROM nginx:1.25.3# 设置构建参数
ARG WEBPORT# 将生成的静态页面文件复制到nginx的/usr/share/nginx/html/目录
COPY dist/ /usr/share/nginx/html/# 将nginx.xml配置文件复制到镜像中
COPY nginx-docker.conf /etc/nginx/nginx.conf# 端口
EXPOSE ${WEBPORT}# 容器启动时运行的命令
CMD ["nginx", "-g", "daemon off;"]

docker-compose.yml

networks:higec_net:external: true
services:web:image: liv****k-web:latestcontainer_name: liv****k-webrestart: alwaysports:- 9300:9300networks:higec_net:ipv4_address: 172.19.8.70volumes:- /etc/timezone/timezone:/etc/timezone- /etc/localtime:/etc/localtime:ro

nginx-docker.conf

user  root;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
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;# HTTP配置server {listen       9300;server_name  localhost;# 配置打包文件目录location / {root   /usr/share/nginx/html;index  index.html index.htm;client_max_body_size 200m;try_files $uri $uri/ /index.html;}# 配置静态资源路径location /api {# 正则解析rewrite ^.+api/(.*)$ /$1 break;include uwsgi_params;# 后端IP+端口proxy_pass http://172.19.8.71:9301;client_max_body_size 200m;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}
}

web_build.sh

#!/bin/bashWEB_PATH="/home/compose/web"
WEB_NAME="l******-web:9300"# 进入指定目录
cd $WEB_PATH || { echo "Failed to change directory"; exit 1; }echo "########## 停止所有容器 #####################"
# 运行docker-compose清除容器
docker-compose downecho "########## 构建镜像 #####################"
# 获取名称
module_name=${WEB_NAME%%:*}
echo "########## 名称 : $module_name  #####################"
# 获取端口
module_port=${WEB_NAME##*:}
echo "########## 端口 : $module_port  #####################"
# 获取镜像ID
CID_BUSINE=$(docker images | grep "$module_name" | awk '{print $1}')
echo "# - - - - -   $CID_BUSINE"
if [ -z "$CID_BUSINE" ]; thenecho "空值,不用删除镜像!"
else# 删除镜像docker rmi $CID_BUSINE
fi
# 构建新的镜像
docker build -t $module_name:latest --build-arg WEBPORT=$module_port .echo "########## 启动项目容器 #####################"
docker-compose up -d
echo "########## 容器运行完成 #####################"

运行构建

查看Docker镜像和容器

远程服务器构建前端容器完成!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880704.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文详解文件摆渡系统是什么?企业需要什么样的文件摆渡产品?

文件摆渡系统是一种旨在实现企业内不同网络、安全域、网段之间的文件传输、同步、共享、管理与处理的工具或平台。文件摆渡系统的主要作用是确保文件能够在不同的存储环境、操作系统、应用程序或部门之间有效传递,同时保障文件的安全性、完整性和合规性。一、文件摆渡系统的核…

IvorySQL 升级指南:从 3.x 到 4.0 的平滑过渡

日前,IvorySQL 4.0 重磅发布,全面支持 PostgreSQL 17,并且增强了对 Oracle 的兼容性。关于 IvorySQL 4.0 的介绍,各位小伙伴可以通过这篇文章回顾:IvorySQL 4.0 发布:全面支持 PostgreSQL 17. 在 IvorySQL 4.0 发布后,有小伙伴私下询问升级方法,那么本篇文章就来详细描…

kvm 基础

kvm 概述 KVM(Kernel-based Virtual Machine)是一个开源虚拟化技术,它将 Linux 内核转变为一个裸金属 hypervisor。 基本概念 1. 集成于 Linux:KVM 是 Linux 内核的一部分,支持在现有的 Linux 系统上创建和管理虚拟机。 2. 虚拟化类型:KVM 支持完全虚拟化,允许运行不同操…

Ftrans数据跨境传输方案,推动数据跨境安全有序自由流动!

在全球数字经济快速发展的今天,数据跨境传输流动已成为企业国际化不可回避的重要议题。根据权威机构数据,全球跨境数据流量每年增长超过30%,企业数据出境已从简单的信息传输,演变为复杂的合规性管理。 目前,我国数据跨境传输安全管理体系已经初步构建形成。《网络安全法》…

如何打造高效、统一的供应商协同平台?

供应商协同,简单说就是把供需双方的各种“需求”找到对应的“供应”来匹配。这种“需求”和“供应”更多的不是实物,而是资讯、方法和活动。各企业需要一个供应商协同平台实现协同管理,供应链节点各企业形成共同的彼此认同的价值取向和文化理念,建立全面的战略合作伙伴关系…

RestClient 通过拦截器实现请求加密

今天我发现了一个关于请求加密的有效写法,特此分享给大家。如果你的加密需求是将请求参数也包含在内,通常情况下,我们需要先将请求体转换成 JSON 格式或其他对象类型,再使用字符串的形式进行加密操作。以下是伪代码示例,展示了这一过程的实现方法: String payloadString …

读算法简史:从美索不达米亚到人工智能时代10纠错和加密

通信系统需纠错,汉明码优化校验和;互联网设计缺安全,公钥加密RSA成基石,保障数据传输安全,现广泛用于万维网SSL。1. 纠错 1.1. 像互联网这样的通信系统,被设计成将信息的精确副本从发送方传输到接收方 1.2. 通常,接收到的信号会受到电子噪声的污染1.2.1. 噪声是任何会破…

2025 年java最新 ide 系列激活

2025 ide 激活N6IQ9MTOK0-eyJsaWNlbnNlSWQiOiJONklROU1UT0swIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5Zyw5Z2AIHd3d8K3YWppaHVvwrdjb20iLCJsaWNlbnNlZVR5cGUiOiJQRVJTT05BTCIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJl…

INFINI Labs 产品更新 - Easysearch 增强 Rollup 能力,Console 完善 TopN 指标等

INFINI Labs 产品更新发布!此次更新,Easysearch 增强 Rollup 能力,支持更多的聚合方式;Console 完善了 TopN 的指标,支持自定义视图,并内嵌视图模板;Gateway 进行了多处优化以及修复相关 Bug 等等。欢迎下载体验,探索更多可能! INFINI Easysearch v1.10.1 INFINI Easy…

Proj CJI Paper Reading: Detecting language model attacks with perplexity

AbstractTool: PPL Findings:queries with adversarial suffixes have a higher perplexity, 可以利用这一点检测 仅仅使用perplexity filter对mix of prompt types不合适,会带来很高的假阳率Method: 使用Light-GDB根据perplexity和token length filter带有adversarial suffix…

年化收益17倍的红中探底(单针探底)操作策略

作者QQ: 396068801,加Q分享交流通达信红中探底指标。 红中探底条件: # 更新日志:# 2025-2-7 改为红中创10天新低,25日均线向上,尾盘进。# 止盈操作:涨停不卖, 每涨8%就卖一半,直到浮盈达到3倍清仓;高点跌8%清仓。# 止损: 买入后只要跌超6%就清仓止损。# 卖票时间: …