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

ingress在一个网站下部署两个前端项目,通过路由前缀区分

环境:windows+minikube+docker desktop

1. 前端项目配置base url,对于vite项目就是在vite.config.ts里面修改‘

export default defineConfig({ base: "/test1/", // .... })

然后路由配置的地方也要修改

const router = createRouter({ history: createWebHistory("/test1/"), // .... })

配置完成后用npm run dev命令在本地看看,正常应该是所有路由都加上了test1的前缀

2. 提前用npm run build命令打包,创建Dockerfile文件

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

把dist复制到test1目录下,因为等到了线上环境的时候,会请求/test1/assets/xxx文件,如果对应位置没有就报404的错误。

3. 用docker build -t test1:latest . 命令做镜像,不要忽略命令中最后的点号。

做完镜像之后,记住有个image id信息,是在writing image sha256:xxxxx这一行里面

可以使用 docker run --rm -it test1:latest /bin/sh 先进镜像里面看看对不对,运行curl http://localhost/ui/assets/logo.svg这样的命令,看看是不是正常返回一个svg+xml格式的文件,总之就是要确定服务跑起来了。

4. 确定镜像正常之后,就要把镜像加载到minikube里面

命令是 minikube image load test1:latest

如果之前运行过minikube,可以运行minikube stop, minikube start重新启动一下,确保没有别的干扰

5. 创建一个deploy.yaml文件,内容直接让AI生成就可以,没什么出错的空间

运行 kubectl apply -f deploy.yaml,运行之后再运行kubectl get pods,就可以看到起来的服务了,要确定状态都是Running。

可以用kubectl describe pod [pod的名字] 这个命令,看看Image id和docker做成的镜像id是不是一样的,不是一样的就要删掉旧的镜像,换成新的

// 删除镜像 minikube ssh -- docker rmi -f test1:latest // 确认是否删掉了 minikube ssh -- docker images | findstr test1 // 再运行image load那个命令加载

稳妥起见,还可以运行 kubectl exec -it [pod的名字] -- /bin/sh 指令到环境内部看一看,看看是不是对的

如果deploy.yaml文件改了,或者镜像改了,需要重启服务

kubectl rollout restart deployment test1 test2。test1和test2是自己服务的名字

6. 创建一个ingress.yaml文件,一定要注意,不要 nginx.ingress.kubernetes.io/rewrite-target: / 这个,我出错就在这里了。

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: ingressClassName: nginx rules: - http: paths: - path: / pathType: Prefix backend: service: name: test1-service port: number: 80 - path: /test1 pathType: Prefix backend: service: name: test1-service port: number: 80 - path: /test2 pathType: Prefix backend: service: name: test2-service port: number: 80

创建之后,需要运行 kubectl apply -f ingress.yaml 以及 minikube addons enable ingress打开ingress服务。

如果ingress.yaml文件改了,可以运行kubectl get ingress看到ingress的名字,然后kubectl delete ingress [ingress的名字] 删掉ingress,之后运行apply那个命令

7. 以上步骤都完成之后,需要验证

可以运行minikube ip,看到ip地址,然后运行minikube ssh进入命令行,运行curl http://[刚看到的ip]/test1 这样,看看是不是都能连通。这个工具和docker进入,以及kubectl exec进入差不多,都可以通过exit指令退出。

如果顺利的话,可以运行minikube tunnel,开启一个隧道,之后就能直接在网页上通过http://127.0.0.1/test1/ 来看到项目了。

http://www.jsqmd.com/news/621220/

相关文章:

  • 2026年热门的地磅/防爆地磅优质厂家汇总推荐 - 品牌宣传支持者
  • 保姆级教程:在Vivado 2023.1中手把手配置Xilinx 7系列FPGA的PCIe硬核IP
  • QT开发避坑:QSlider滑块值变化处理的两种方式,别再只用valueChanged了
  • TimeKAN:基于频率分解的时间序列预测新范式,ICLR 2025亮点解析
  • MCP 实践(二)Streamable HTTP:统一端点与动态流式传输的架构演进
  • GD32单片机低功耗模式深度解析:从理论到源码实战
  • 2026Q2精密非标定制塑料成型机怎么选:精密非标定制塑料成型机/连续式挤压成型机/非标塑料成型机/高速吸塑机/选择指南 - 优质品牌商家
  • texlive环境下实现times字体的一个组合命令
  • 5分钟解锁B站缓存视频:m4s-converter让你的收藏永不消失
  • 2026年家用浴花合规生产企业盘点:变色浴花/四色浴球/四色浴花/回弹压缩沙发/多功能压缩沙发/多色浴花/大号浴球/选择指南 - 优质品牌商家
  • Celery 实战解析:构建高效Python分布式任务队列系统
  • 用Wireshark抓包,带你亲历OSPF邻居从‘相亲’到‘结婚’的7个状态
  • Langchain项目实战:用PostgreSQL的PGVector插件存向量,比专用向量数据库省了多少钱?
  • 2026年320千瓦充电桩厂家排行:充电桩那个牌子好/充电桩销售/充电桩销售/充电站投建/兆瓦充电桩/兆瓦充电桩/选择指南 - 优质品牌商家
  • 多功能空调控制系统的设计(有完整资料)
  • YOLOv5实战:无人机巡检图片差异对比与违建标记(附完整代码)
  • Tauri 2.0 Shell插件避坑指南:预设参数覆盖、权限配置与Command.create的正确姿势
  • Redis 实现接口幂等性的三种高效策略
  • ESMFold:如何用150亿参数语言模型重塑蛋白质结构预测格局
  • 企业自托管工具推荐:数据完全掌控的20+款软件
  • 无线通信-3GPP-3gpp文档高效检索与下载指南
  • 2026年主流App内测分发方案深度对比
  • 企业级基于STM32 + uC/OS的BMS电池管理系统源代码剖析
  • 华中科技大学本科毕业论文LaTeX模板完整使用指南:告别格式烦恼的终极解决方案
  • 2026年AI超级员工系统品牌大比拼,谁是行业口碑王?
  • 2026年振动淘金溜槽厂家排行:淘金船/淘金车/混凝土沙石分离机/混凝土砂石分离机/滚筒淘金设备/滚筒砂石分离机/选择指南 - 优质品牌商家
  • 彻底告别OpenClaw使用焦虑:我给他装上了“透视眼”和“批量克隆模组食
  • Canal Client-Adapter实战:MySQL到ES数据同步的5个常见坑及解决方案(1.1.4版)
  • 2026年涉税服务公司怎么选:出口退税代理机构/出口退税办理机构/外企税务代办机构/外贸企业税务服务公司/外贸退税服务机构/选择指南 - 优质品牌商家
  • 数据安全与隐私保护:从理论到实践