dockerfile部署镜像 ->push仓库 ->虚拟机安装建木 ->自动部署化 (详细步骤)
目录
创建私服仓库
vi /etc/docker/daemon.json
vim deploy.sh判断脚本内容
创建 建木 + 后端部署
命名空间
设置密码用户名
创建git仓库
gitignore文件内容
图形项目操作
git
maven
docker镜像
点击流程日志
vim /etc/docker/daemon.json
执行部署脚本 ip 开发环境
webhook
设置--->web钩子-->URL
"克隆 "DSL
去idea添加版本号 因为我是子继父 拆分的项目 需要这个 版本号随便给
然后仓库的依赖也不要忘记给
前端部署
这里再下载一个nginx 直接最新版本
加速包
服务器之间传输命令操作 + 安装nginx
vim default.conf脚本操作
容器化时代的前端部署
大致流程图
git
node
缓存
scp
创建私服仓库
阿里云 liunx dockerfile构建镜像 部署 (超细 手把手教)-CSDN博客

名字随便取

16000

容许覆盖 默认阿里

在这里授权

保存 开端口

采访是这样的

vi /etc/docker/daemon.json
里面放 "insecure-registries":["xxxx:16000"] 前面是你自己的ip 是nexus的服务器ip

刷新 systemctl daemon-reload
重启 systemctl restart docker
nexus登录 docker login xxxx(ip):16000
docker tag cloud-file:1.0.0 xxxx:16000/cloud-file:1.0.0
docker push xxxx:16000/cloud-file:1.0.0

觉得下载慢的可以换成服务器的ip私就快 那个是内网

知道大家懒 所以我复制上来了
vim deploy.sh判断脚本内容
vim deploy.sh
#!/bin/bashexport repHost=xxx:16000/export imageNameexport imageTag#解析参数
while getopts "i:t:r" opt; docase $opt in i) imageName=$OPTARG ;;t)imageTag=$OPTARG ;;r) repHost=$OPTARG ;;\?)echo "无效"exit 1 ;;esac
doneexport image=$repHost$imageName:$imageTagecho "镜像名称: $imageName,镜像标签:$imageTag"
echo "$image"#不能为空
if [ -z "$imageName" ]; thenecho"镜像名称不能为空 使用-i"exit 1
fi
if [ -z "$imageTag" ]; thenecho"标签名称不能为空 使用-t"exit 1
fi #判断容器是否存在
# 使用 docker ps -a 检查所有容器,然后 grep 过滤出特定的容器ID
containerId=$(docker ps -a | grep "$imageName" | awk '{print $1}')
echo "容器id--------------$containerId"#如果 containerId 不为空,说明找到了对应的容器
if [ -n "$containerId" ]; then
#检查容器是否正在运行if docker inspect -f '{{.State.Running}}' "$containerId" | grep -q "true"; then#停止容器echo"停止容器$imageName -$containerId"docker stop "$containerId"fi# 删除容器echo "删除容器 $imageName - $containerId"docker rm -f "$containerId"
else#如果没有找到容器,打印一条信息并忽略echo "没有找到这个容器"
fiimageId=$(docker images -q "$image")if [ -n "$imageId" ]; thenecho "删除镜像 $imageId"docker rmi "$imageId"
elseecho "没有找到镜像"
fiecho "镜像开始下载"docker pull $imagedocker run -d --name $imageName --network=dev-net \
$image
mkdir jianmu
cd jianmu/
wget https://gitee.com/jianmu-dev/jianmu-deploy/raw/master/docker-compose.yml
docker compose up -d
直接ip访问:80 记得放端口不然访问不了
登录 用户名 admin 密码他默认123456
创建 建木 + 后端部署
建木有什么作用呢
刚刚上面一堆操作 这个那个命令的 有了他 会方便很多 持续集成持续部署 我刚才演示的都是部署到线上 但是 ,我们得清楚 ,有些东西不需要那么繁琐,就能部署到线上,首先,先创建密钥得创建一个命名空间。

点击进去创建
命名空间

设置密码用户名
都是你之前设置的服务器 等等其他的密码


根据你的需求
这是我依次创建好的

就可以去进行编排
创建git仓库
Git勤勉 两种方式上传-CSDN博客
项目不要忘记加这个文件

这个不加 上传仓库不了 太多了没必要的东西了
gitignore文件内容
###################################################################### # Build Tools.gradle /build/ !gradle/wrapper/gradle-wrapper.jartarget/ !.mvn/wrapper/maven-wrapper.jar###################################################################### # IDE### STS ### .apt_generated .classpath .factorypath .project .settings .springBeans### IntelliJ IDEA ### .idea *.iws *.iml *.ipr### JRebel ### rebel.xml ### NetBeans ### nbproject/private/ build/* nbbuild/ dist/ nbdist/ .nb-gradle/###################################################################### # Others *.log *.xml.versionsBackup *.swp!*/build/*.java !*/build/*.html !*/build/*.xml

这个仓库是我之前拆分项目创建其中之一一个仓库

图形项目操作
把链接复制好 去这图形项目里开始操作
git

把前面创建好的仓库链接复制过来
设置节点名字 把刚刚复制的git链接给他 及名字密码 接下来就是Maven 记得连接否则没有参数

maven

然后去你的nexus复制公共路径 这里要用nexus的内网ip 


然后保存

docker镜像


不要有空格
直接在这个界面再创建一个命名 就取个名字什么都不用加 变成下面的样子

触发 打开里面是这样的

点击流程日志

他先因为第一次 没有镜像,所以他先会去拉。拉完镜像之后,它才会执行。第一次的话都会稍微有点慢,是正常现象。
此时你的建木服务器有需要修改一个配置
vim /etc/docker/daemon.json
里面放
再去登录
docker login xxx:1600
然后再去建木重启触发
强调(如果有依赖报错 解决之后需要再上传git 同时也要deploy 如果是子继承父 需要加版本号 最重要的是公共仓库地址也要给)
<distributionManagement><repository><id>yun-releases</id><name>yun-releases</name><url>http://xxxx:8081/repository/maven-releases/</url></repository> </distributionManagement>


执行部署脚本 ip 开发环境

sh /home/deploy/deploy.sh -i()-t ()
webhook
如果不想每次手动 可以搞个webhook 接下来就是教程
这个时候点击git system仓库的设置 会有个web钩子 这个作用是不需要自己手动触发

然后去建木拉一个这个

保存后点击这个会出现一个链接 然后放到这里
设置--->web钩子-->URL

就可以了
如果想让他部署完了通知加个邮件 接下来就是邮件通知流程

host:smtp.qq.com
port:587
"克隆 "DSL
因为不可以克隆 所以只能一个一个把其他项目也是按照这个步骤 但是不是完全没有办法
进去有一个查看DSL
复制一下到
代码项目这里操作 粘贴上去
到这边把这个改成你其他git项目的链接
这里要name也要改变
就出现这个
进去
复制给你现在这个项目创建钩子
去idea添加版本号 因为我是子继父 拆分的项目 需要这个 版本号随便给
然后仓库的依赖也不要忘记给
<distributionManagement><repository><id>yun-releases</id><name>yun-releases</name><url>http://xxxx:8081/repository/maven-releases/</url></repository> </distributionManagement>还有忽略包 前面忘记说了
<!-- 加入maven deploy插件,当在deploy时,忽略些model--> <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><configuration><skip>true</skip></configuration> </plugin>然后上传git上
再去建木启动就好了
前端部署
去服务器把原本Nginx80端口删了或者杀了 因为我前面下载过nginx了
ps aux | grep nginx
kill -9 (id)
现在把之前在虚拟机部署的东西都可以删除了
rm -rf (auth/)名称
因为我们要用容器化了
Nginx也删除 不需要它代替谁了
rm -rf (nginx/)名称
这里再下载一个nginx 直接最新版本
docker pull nginx
加速包
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn"
]
}
EOFsudo systemctl daemon-reload
sudo systemctl restart docker
服务器之间传输命令操作 + 安装nginx
或者 去有加速包的服务器拉一下传输过来
docker save -o nginx.tar nginx
ifconfig 查看网络接口配置 找到eth0下面的ip (在你要的服务器查看)
scp nginx.tar root@xxx(是你刚刚查看的ip):/home/nginx.tar
yes 输入你的密码
成功
这个时候在那边服务器操作
docker load < /home/nginx.tar
启动 docker run --name nginx -p 80:80 nginx
访问这个ip+80
出现这个才正常
docker exec -it nginx /bin/bash
cd ..
cd etc/
ls
cd /nginx
ls
cat nginx.conf
这是一些工作的一些目录
exit
mkdir config
docker cp nginx:/etc/nginx/conf.d/default.conf ./
vim default.conf
vim default.conf脚本操作
把这个注释了

换成这个
location / {
root /home/html/dist;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}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://cloud-gateway:8080/;
}
vim deployNginx.sh
#!/bin/bash
docker run -d \
--name cloud-wed \
--network dev-net \
-p 80:80 \
-v ./config/default.conf:/etc/nginx/conf.d/default.conf \
-v ./html:/home/html \
nginx
docker rm -f nginx
sh deployNginx.sh
docker logs -f cloud-wed
好了 Linux操作结束
接下来就是容器化时代的前端部署
容器化时代的前端部署
build:prod大致流程图
git

node

缓存
在这里新建一个缓存。新建缓存。给他挂缓存。缓存目录给它挂一下就行了。这样的你第一次下载会比较慢一点。但是第二次下载了,他会用你第一次下载的东西
现在建木传到建开发环境。服务器与服务器之间传输。
这个时候就需要scp了
scp


这里是为了确定前端打包路径 /home/deploy/web-ui/html/dist
去git 直接在设置下面这里推送
相关文章:
dockerfile部署镜像 ->push仓库 ->虚拟机安装建木 ->自动部署化 (详细步骤)
目录 创建私服仓库 vi /etc/docker/daemon.json vim deploy.sh判断脚本内容 创建 建木 后端部署 命名空间 设置密码用户名 创建git仓库 gitignore文件内容 图形项目操作 git maven docker镜像 点击流程日志 vim /etc/docker/daemon.json 执行部署脚本 ip 开发…...
Android串口开发及读取完整数据的解决方法
串口发送实质就是向串口设备写入、读取字节流,和文件的操作很相似,安卓官方已经提供了android-serialport-api,在开源社区上也有很多衍生项目可以借鉴,本文介绍其中一种用法。 添加依赖 在Module下的 build.gradle 中添加: implementation com.aill:A…...
java之对象向下转型
java中,向下转型是为了重新获得因为向上转型而丢失的子类特性。在先下转型前,必须先进行向上转型。 语法格式如下 父类类型 父类对象子类实例 子类类型 子类对象(子类)父类对象 示例代码如下 class Animal01 {public void sh…...
ElasticSearch核心之DSL查询语句实战
什么是DSL? Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。 DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。目前常用的框架查询方法什么的底层都是构建DSL语句实现的,所以你必…...
Axure中继器:数据动态展示的强大工具
在Axure RP这一强大的原型设计工具中,中继器(Repeater)无疑是一颗璀璨的明珠。它以其独特的功能和广泛的应用场景,成为设计师在创建数据密集型原型时的首选。本文将深入探讨Axure中继器的特点、使用方式及其在数据动态展示中的重要…...
QT--聊天室
一、设计要求 用QT做一个聊天室, 制作一个服务器和客户端。可以进行注册、登录, 登陆成功后可以使用昵称进行发送、接收消息。 能根据昵称、聊天内容查询历史记录,也可以查询全部聊天记录。 。 二、客户端三级ui界面 三、项目代码 //在…...
Javascript前端面试基础4【每日学习并更新10】
同步和异步的区别 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等…...
社区团购系统搭建开发,前端uniapp。社区团购搭建开发定制
目录 前言: 一、社区团购系统有哪些功能? 二、社区团购管理端 三、社区团购的基本流程如下: 总结 : 前言: 社区团购是一种以社区为单位进行的集体购物模式。这种模式利用了互联网平台来组织同一社区内的居民一起购…...
node+mysql+layui+ejs实现左侧导航栏菜单动态显示
nodemysqllayuiejs实现左侧导航菜单动态显示 实现思路效果图数据库技术栈代码实现main.html(前端首页页面)查询资源菜单方法 jsapp.js配置ejs模板 node入门到入土项目实战开始,前端篇项目适合node小白入门,因为我也是小白来学习no…...
FRP配置内网穿透52版本以上适用
简述 适用frp配置内网穿透来说我们需要进行简单的区分,具有公网IP的服务器我们简称为服务端,内网的服务器我们可以简称为客户端,frp需要针对不同的服务器配置不同的文件 下载安装包 Linux下载地址 https://github.com/fatedier/frp/relea…...
IFM易福门LR3000LR3300液位传感器操作说明
IFM易福门LR3000LR3300液位传感器操作说明...
【Python大语言模型系列】基于阿里云人工智能平台采用P-Tuning v2微调ChatGLM2-6B大模型(完整教程)
这是我的第331篇原创文章。 一、引言 P-Tuning 是一种对预训练语言模型进行少量参数微调的技术。所谓预训练语言模型,就是指在大规模的语言数据集上训练好的、能够理解自然语言表达并从中学习语言知识的模型。P-Tuning 所做的就是根据具体的任务,对预训练…...
基于Spring boot + Vue的加油站系统
项目名称:加油站系统 作者的B站地址:程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csdn地址:程序员云翼-CSDN博客 1.项目技术栈: 前后端分离的项目 后端:Springboot MybatisPlus 前端:Vue…...
️RPC协议 --基于TCP实现RPC通信
RPC 协议介绍 RPC(Remote Procedure Call,远程过程调用)协议是一种通信协议,允许一个程序调用另一个地址空间(通常是在网络上)的过程或函数,而不需要显式地处理细节如数据序列化和网络通信。它允许开发人员编写分布式应用程序,就像编写本地应用程序一样。 关键特点和组…...
android(安卓)最简单明了解释版本控制之MinSdkVersion、CompileSdkVersion、TargetSdkVersion
1、先明白几个概念 (1)平台版本(Android SDK版本号) 平台版本也就是我们平时说的安卓8、安卓9、安卓10 (2)API级别(API Level) Android 平台提供的框架 API 被称作“API 级别” …...
Redis缓存穿透、击穿和雪崩的理解和解决思路
Redis的缓存穿透 缓存穿透是指那些查询请求所要获取的数据既不在缓存(Redis)中,也不在数据库(例如:MySQL)中,因此每次请求都会直接访问数据库。这种情况通常由以下几种情形引起: 恶…...
ReactHooks(完结)
上期戳here ReactHooks[三] 一.memo 函数1.1 语法格式 二. useMemo2.1 问题引入2.2 语法格式2.3 使用 useMemo 解决刚才的问题 三.useCallback3.1 useMemo和useCallback区别3.2 语法格式 四.useTransition4.1 问题引入4.2 语法格式4.3 使用 isPending 展示加载状态4.4 注意事项…...
【数据中台】大数据管理平台建设方案(原件资料)
建设大数据管理中台,按照统一的数据规范和标准体系,构建统一数据采集﹣治理﹣共享标准、统一技术开发体系、统一接口 API ,实现数据采集、平台治理,业务应用三层解耦,并按照统一标准格式提供高效的…...
UE5+OpenCV配置(Windows11系统)
一、概述 因为需要在UE5中使用OpenCV这些工具进行配置,所以在网络上参考借鉴一些资料进行配置。查询到不少的资料,最后将其配置成功。在这里顺便记录一下自己的配置成功的过程。 二、具体过程 (一)版本 使用Windows11系统、UE5.…...
自研Vue3开源Tree组件:节点拖拽bug修复
当dropType为after,且dropNode为父节点时,bug出现了: bug原因:插入扁平化列表的位置insertIndex计算的不对: 正确的逻辑,同inner要算上子孙节点所占的位置: bug修复!...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...












复制给你现在这个项目创建钩子
kill -9 (id)

docker exec -it nginx /bin/bash




