20250110doker学习记录
1.本机创建tts环境。用conda.
0.1安装。我都用的默认,你也可以。我安装过一次,如果修复,后面加 -u
bash Anaconda3-2024.10-1-Linux-x86_64.sh
等待一会。
(base) kt@kt4028:~/Downloads$ conda -V
conda 24.9.2
学习资源
Conda 常用命令大全(非常详细)零基础入门到精通,收藏这一篇就够了_conda命令-CSDN博客
1.1设置镜像源,防止 出错。
anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
1.1.1查看当前源:
kt@kt4028:~/anaconda3$ conda config --show channels
channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- https://repo.anaconda.com/pkgs/main- https://repo.anaconda.com/pkgs/r
kt@kt4028:~/anaconda3$
1.1.2删除所有自定义源
kt@kt4028:~/anaconda3$ conda config --remove-key channels
kt@kt4028:~/anaconda3$ conda config --show channels
channels:- https://repo.anaconda.com/pkgs/main- https://repo.anaconda.com/pkgs/r
kt@kt4028:~/anaconda3$
1.1.3添加镜像
#添加镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2#终端显示包从哪个channel下载,以及下载地址是什么
conda config --set show_channel_urls yes
kt@kt4028:~$ conda config --show channels
channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- defaults- https://repo.anaconda.com/pkgs/main- https://repo.anaconda.com/pkgs/r
kt@kt4028:~$
或通过手动方式
(base) kt@kt4028:~/Downloads$ cat ~/.condarc
channels:- defaults
show_channel_urls: true
default_channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
(base) kt@kt4028:~/Downloads$
1.1.4 创建环境
(base) kt@kt4028:~/Downloads$ conda create -n tts-env python=3.12 -y
1.1.5激活
(base) kt@kt4028:~/Downloads$ conda activate tts-env
(tts-env) kt@kt4028:~/Downloads$
1.1.6防止自动进入base环境
(base) kt@kt4028:~$ conda config --set auto_activate_base false
(base) kt@kt4028:~$
1.1.7查看默认位置之下:如上面的tts-env
/home/kt/anaconda3/envs
2.建立 本地文件夹
kt@kt4028:~$ pwd
/home/kt
kt@kt4028:~$ mkdir -p myproject/tts
kt@kt4028:~$
这条命令会执行以下操作:
1. 检查 myproject 文件夹是否存在,如果不存在,则创建它。
2. 在 myproject 文件夹内创建 tts 文件夹。使用 mkdir -p 的好处是,即使某些中间目录已经存在,命令也不会报错,只会创建那些不存在的目录。这样可以确保命令的健壮性,避免因目录已存在而导致的错误。
3.拉取git项目
3.1安装git
win
git的安装与配置教程-超详细版_git安装及配置教程-CSDN博客
ubuntu
https://blog.csdn.net/wqzbxh/article/details/134903221?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522b98311b40979a9a3385d39c3eb0e4127%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=b98311b40979a9a3385d39c3eb0e4127&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-134903221-null-null.142^v101^pc_search_result_base1&utm_term=ubuntu%E5%AE%89%E8%A3%85git&spm=1018.2226.3001.4187
https://blog.csdn.net/wqzbxh/article/details/134903221?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522b98311b40979a9a3385d39c3eb0e4127%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=b98311b40979a9a3385d39c3eb0e4127&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-134903221-null-null.142%5Ev101%5Epc_search_result_base1&utm_term=ubuntu%E5%AE%89%E8%A3%85git&spm=1018.2226.3001.4187
GitHub新手用法详解【适合新手入门-建议收藏!!!】-CSDN博客
3.2目标:
https://github.com/2noise/ChatTTS.git
操作:
kt@kt4028:~$ cd myproject
kt@kt4028:~/myproject$ ls
tts
kt@kt4028:~/myproject$ cd tts
kt@kt4028:~/myproject/tts$ git clone https://github.com/2noise/ChatTTS.git
Cloning into 'ChatTTS'...
remote: Enumerating objects: 2676, done.
remote: Counting objects: 100% (745/745), done.
remote: Compressing objects: 100% (304/304), done.
remote: Total 2676 (delta 522), reused 441 (delta 441), pack-reused 1931 (from 3)
Receiving objects: 100% (2676/2676), 8.02 MiB | 361.00 KiB/s, done.
Resolving deltas: 100% (1602/1602), done.
kt@kt4028:~/myproject/tts$
4.pycharm完成环境等部署与测试
为了简单,不使用原来的内容只是让其跑起来。
无法上图。描述一下:
新建项目,选择/home/kt/myproject/tts/ChatTTS
使用环境:tts-env
确定,选是。
上一个测试代码:向数据库中写入数据。具体原因后边会用
参考
docker-compose 一个实例-CSDN博客
代码
from pymongo import MongoClient
from pymongo.errors import ConnectionFailure# 定义MongoDB连接信息
write_host = 'mongodb://admin:password@10.73.30.241:27017/?authSource=admin'
read_host = 'mongodb://admin:password@10.73.30.241:27017/?authSource=admin'
database_name = 'aa' # 替换为你的数据库名称
collection_name = 'aa' # 替换为你的集合名称# 连接到27017端口并插入100条数据
try:write_client = MongoClient(write_host)write_db = write_client[database_name]write_collection = write_db[collection_name]# 插入100条测试数据for i in range(100):test_data = {"name": f"test_{i}", "value": i}write_collection.insert_one(test_data)print(f"100 documents inserted into {write_host}")
except ConnectionFailure as e:print(f"Failed to connect to {write_host}: {e}")
finally:write_client.close()# 从27017端口读取数据
try:read_client = MongoClient(read_host)read_db = read_client[database_name]read_collection = read_db[collection_name]# 读取集合中的所有文档documents = read_collection.find()# 打印文档print(f"Data from {read_host}:")for doc in documents:print(doc)print("\n" + "-"*80 + "\n")except ConnectionFailure as e:print(f"Failed to connect to {read_host}: {e}")
finally:read_client.close()
测试合格。主要原因是为了同步卷使用的。
4.docfile文件的建立。应该与现有的系统对应:ubuntu
4.1 Dockerfile内容参考
FROM ubuntu:20.04# 设置工作目录
WORKDIR /app# 安装必要的软件包
RUN apt-get update && \apt-get install -y \wget \&& apt-get clean \&& rm -rf /var/lib/apt/lists/*# 下载并安装Miniconda
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /miniconda.sh && \/bin/bash /miniconda.sh -b -p /opt/conda && \rm /miniconda.sh && \/opt/conda/bin/conda clean --all -y# 设置环境变量
ENV PATH=/opt/conda/bin:$PATH# 初始化conda
RUN /opt/conda/bin/conda init bash# 其他必要的设置(根据项目实际需求添加)# 注意:不再设置默认命令CMD,因为后期会手动运行脚本
4.2 start.sh不用了
#!/bin/bash# 激活虚拟环境
source /app/tts-env/bin/activate# 运行Python脚本
python /app/ChatTTS/ceshi.py
4.3 生成images
kt@kt4028:~$ vi Dockerfile
kt@kt4028:~$ vi start.sh----------------------网络的因素,要使用宿主机上的网docker build --network="host" -t tts-i
4.4 测试挂载情况,因为要测试网络所以用到本地。
docker run -it --network='host' --name my-tts-container -v /home/kt/myproject/tts/ChatTTS:/app/ChatTTS -v /home/kt/anaconda3/envs/tts-env:/opt/conda/envs/tts-env my-tts-image /bin/bash
4.5进入后有个错误
运行
ceshi.py时,pymongo依赖的cryptography库遇到了与 OpenSSL 3.0 相关的问题。具体来说,OpenSSL 3.0 的 legacy provider 未能成功加载,这通常是因为 OpenSSL 3.0 默认不启用 legacy provider,而某些库(如cryptography)在某些情况下可能需要它。export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1
5.将容器打包成一个新镜像
kt@kt4028:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ae93b7f7af4 my-tts-image "/bin/bash" 6 minutes ago Up 3 seconds my-tts-container
c9652fe162bd mongo-express "/sbin/tini -- /dock…" 23 hours ago Up 23 hours 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp my-mongo-express
d45df328cd77 mongo:latest "docker-entrypoint.s…" 23 hours ago Up 23 hours 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp my-mongo
kt@kt4028:~$ docker commit my-tts-container tts-i:1.0
sha256:fcd3aa9d1c0a84999885be2f1d3ff0642073873c81a9fd095f4505521d36247c
kt@kt4028:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tts-i 1.0 fcd3aa9d1c0a 14 seconds ago 608MB
5.2再验证
docker run -it --network='host' --name tts-i_1 -v /home/kt/myproject/tts/ChatTTS:/app/ChatTTS -v /home/kt/anaconda3/envs/tts-env:/opt/conda/envs/tts-env tts-i /bin/bash
6.重新生成
FROM ubuntu:20.04# 设置工作目录
WORKDIR /app# 安装必要的软件包
RUN apt-get update && \apt-get install -y \wget \&& apt-get clean \&& rm -rf /var/lib/apt/lists/*# 下载并安装Miniconda
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /miniconda.sh && \/bin/bash /miniconda.sh -b -p /opt/conda && \rm /miniconda.sh && \/opt/conda/bin/conda clean --all -y# 设置环境变量
ENV PATH=/opt/conda/bin:$PATH# 初始化conda
RUN /opt/conda/bin/conda init bash# 自动激活tts-env环境
RUN echo 'source /opt/conda/etc/profile.d/conda.sh && conda activate tts-env' >> ~/.bashrc# 修复 mongo错误
ENV CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1# 其他必要的设置(根据项目实际需求添加)# 注意:不再设置默认命令CMD,因为后期会手动运行脚本
测试成功
kt@kt4028:~$ docker build --network="host" -t tts-ii /home/kt
[+] Building 2.5s (10/10) FINISHED docker:default=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 904B 0.0s=> [internal] load metadata for docker.io/library/ubuntu:20.04 2.4s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [1/6] FROM docker.io/library/ubuntu:20.04@sha256:8e5c4f0285ecbb4ead07 0.0s=> CACHED [2/6] WORKDIR /app 0.0s=> CACHED [3/6] RUN apt-get update && apt-get install -y wget 0.0s=> CACHED [4/6] RUN wget https://repo.anaconda.com/miniconda/Miniconda3- 0.0s=> CACHED [5/6] RUN /opt/conda/bin/conda init bash 0.0s=> [6/6] RUN echo 'source /opt/conda/etc/profile.d/conda.sh && conda act 0.1s=> exporting to image 0.0s=> => exporting layers 0.0s=> => writing image sha256:386459b96e87b0bf1f94b5aa130afacd1af989e98291b 0.0s=> => naming to docker.io/library/tts-ii 0.0s
kt@kt4028:~$ docker run -it --network='host' --name my-tts-ii -v /home/kt/myproject/tts/ChatTTS:/app/ChatTTS -v /home/kt/anaconda3/envs/tts-env:/opt/conda/envs/tts-env tts-ii /bin/bash(tts-env) root@kt4028:/app# cd ChatTTS
(tts-env) root@kt4028:/app/ChatTTS# python ceshi.py
100 documents inserted into mongodb://admin:password@10.73.30.241:27017/?authSource=admin
Data from mongodb://admin:password@10.73.30.241:27017/?authSource=admin:
{'_id': ObjectId('6780d3fc0b669fd899e6ca2e'), 'name': 'test_0', 'value': 0}
{'_id': ObjectId('6780d3fc0b669fd899e6ca2f'), 'name': 'test_1', 'value': 1}
{'_id': ObjectId('6780d3fc0b669fd899e6ca30'), 'name': 'test_2', 'value': 2}
{'_id': ObjectId('6780d3fc0b669fd899e6ca31'), 'name': 'test_3', 'value': 3}
{'_id': ObjectId('6780d3fc0b669fd899e6ca32'), 'name': 'test_4', 'value': 4}
{'_id': ObjectId('6780d3fc0b669fd899e6ca33'), 'name': 'test_5', 'value': 5}
今天先这样,后天。加在同一网络下,内部读取,不在走网络
相关文章:
20250110doker学习记录
1.本机创建tts环境。用conda. 0.1安装。我都用的默认,你也可以。我安装过一次,如果修复,后面加 -u bash Anaconda3-2024.10-1-Linux-x86_64.sh等待一会。 (base) ktkt4028:~/Downloads$ conda -V conda 24.9.2学习资源 Conda 常用命令大…...
MPU6050: 卡尔曼滤波, 低通滤波
对于MPU6050(一种集成了三轴加速度计和三轴陀螺仪的惯性测量单元),对加速度值进行卡尔曼滤波,而对角速度进行低通滤波的选择是基于这两种传感器数据的不同特性和应用需求。以下是详细解释: 加速度值与卡尔曼滤波 为什么使用卡尔曼滤波? 噪声抑制: 加速度计信号通常包含…...
C++的标准和C++的编译版本
C的标准和C的编译版本:原理和概念 理解 C标准 和 C编译版本 的关系是学习 C 的一个重要部分。这两者虽然看似相关,但实际上分别涉及了不同的概念和技术。下面将通过层次清晰的解释,帮助新手理解这两个概念的差异、特点及其相互关系。 一、C标…...
python学习笔记—17—数据容器之字符串
1. 字符串 (1) 字符串能通过下标索引来获取其中的元素 (2) 旧字符串无法修改特定下标的元素 (3) index——查找字符串中任意元素在整个字符串中的起始位置(单个字符或字符串都可以) tmp_str "supercarrydoinb" tmp_position1 tmp_str.index("s") tmp_p…...
UE5 使用内置组件进行网格切割
UE引擎非常强大,直接内置了网格切割功能并封装为蓝图节点,这项功能在UE4中就存在,并且无需使用Chaos等模块。那么就来学习下如何使用内置组件实现网格切割。 1.配置测试用StaticMesh 对于被切割的模型,需要配置一些参数。以UE5…...
51单片机——串口通信(重点)
1、通信 通信的方式可以分为多种,按照数据传送方式可分为串行通信和并行通信; 按照通信的数据同步方式,可分为异步通信和同步通信; 按照数据的传输方向又可分为单工、半双工和全双工通信 1.1 通信速率 衡量通信性能的一个非常…...
Taro+Vue实现图片裁剪组件
cropper-image-taro-vue3 组件库 介绍 cropper-image-taro-vue3 是一个基于 Vue 3 和 Taro 开发的裁剪工具组件,支持图片裁剪、裁剪框拖动、缩放和输出裁剪后的图片。该组件适用于 Vue 3 和 Taro 环境,可以在网页、小程序等平台中使用。 源码 https:…...
PHP民宿酒店预订系统小程序源码
🏡民宿酒店预订系统 基于ThinkPHPuniappuView框架精心构建的多门店民宿酒店预订管理系统,能够迅速为您搭建起专属的、功能全面且操作便捷的民宿酒店预订小程序。 该系统不仅涵盖了预订、退房、WIFI连接、用户反馈、周边信息展示等核心功能,更…...
Hadoop3.x 万字解析,从入门到剖析源码
💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…...
VUE3 常用的组件介绍
Vue 组件简介 Vue 组件是构建 Vue 应用程序的核心部分,组件帮助我们将 UI 分解为独立的、可复用的块,每个组件都有自己的状态和行为。Vue 组件通常由模板、脚本和样式组成。组件的脚本部分包含了各种配置选项,用于定义组件的逻辑和功能。 组…...
deepin-Wine 运行器合并打包器和添加从镜像提取 DLL 的功能
Wine 运行器是一个图形化工具,旨在简化 Wine 环境的管理和使用。它不仅提供了运行和管理 Wine 容器的功能,还增加了打包器和从镜像提取 DLL 的功能。以下是该工具的详细介绍和使用方法。 一、工具概述 Wine 运行器是一个使用 Python3 的 tkinter 构建的图…...
[大模型]本地离线运行openwebui+ollama容器化部署
本地离线运行Openweb-ui ollama容器化部署 说明安装internet操作内网操作问题线程启动错误最终命令总结说明 最近公司有一个在内网部署一个离线大模型的需求,网络是离线状态,服务器有A100GPU,一开始是想折腾开源chatGML4大模型,因为使用过gml3,所以想着部署gml4应该不难。…...
再次梳理ISP的大致流程
前言: 随着智能手机的普及,相机与我们的生活越来越紧密相关。在日常生活中,我们只需要轻轻按下手机上的拍照按钮,就能记录下美好时刻。那么问题来了:从我们指尖按下拍照按钮到一张色彩丰富的照片呈现在我们面前&#x…...
HBuilderX打包ios保姆式教程
1、登录苹果开发者后台并登录已认证开发者账号ID Sign In - Apple 2、创建标识符(App ID)、证书,描述文件 3、首先创建标识符,用于新建App应用 3-1、App的话直接选择第一个App IDs,点击右上角继续 3-2、选择App&#x…...
《解锁鸿蒙系统AI能力,开启智能应用开发新时代》
在当今科技飞速发展的时代,鸿蒙系统以其独特的分布式架构和强大的AI能力,为开发者们带来了前所未有的机遇。本文将深入探讨开发者如何利用鸿蒙系统的AI能力开发更智能的应用,开启智能应用开发的新时代。 鸿蒙系统构筑了15系统级的AI能力&…...
rhcsa练习(3)
1 、创建文件命令练习: ( 1 ) 在 / 目录下创建一个临时目录 test ; mkdir /test ( 2 )在临时目录 test 下创建五个文件,文件名分别为 passwd , group , bashrc &#x…...
科研绘图系列:R语言绘制Y轴截断分组柱状图(y-axis break bar plot)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍特点意义加载R包数据下载导入数据数据预处理画图输出总结系统信息介绍 Y轴截断分组柱状图是一种特殊的柱状图,其特点是Y轴的刻度被截断,即在某个范围内省略了部分刻度。这种图表…...
跳出技术陷阱,探索财富自由的多元路径
自古以来,我们常听到这样一句话:“一技在手,吃穿不愁”。这种理念在以往的时代背景下,确实为许多人提供了稳定的生计保障。然而,在信息爆炸、产能过剩的今天,这种固守一技之长的观念正逐渐显露出其不足&…...
qml SpringAnimation详解
1. 概述 SpringAnimation 是 Qt Quick 中用于模拟弹簧效果的动画类。它通过模拟物体在弹簧力作用下的反应,产生一种振荡的动画效果,常用于模拟具有自然回弹、弹性和振动的动态行为。这种动画效果在 UI 中广泛应用,特别是在拖动、拉伸、回弹等…...
中学综合素质笔记3
第一章职业理念 第三节 教师观 考情提示: 单选题材料分析题 学习要求: 理解、 识记、 运用 (一)教师职业角色的转变(单选材料分析) 从教师与学生的关系看——对学生 新课程要求教师应该是学生学习的引…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
