1前言
友情提示, 这篇文章的部署仅供学习参考, 切勿上生产环境
所有的中间件我均采用的是 Docker 容器化部署, 代码可在本地启动
不过后面也有教如何将代码打包成镜像和中间件一同部署在 Docker 中
如果使用服务器或者虚拟机的话, 记得开放对应的端口或者关闭防火墙(服务器开放对应端口)
2.前置环境部署
2.1 JDK 安装
因为派聪明用的SpringBoot的版本是3.x 所以要用JDK17及以上的版本 : JDK 17 下载
下载完之后直接双击 .exe
文件即可安装, 如果想在 Windows 上进行 JDK 多版本切换
可以参考我之前写的一篇文章, 这里就不过多赘述了, 节约大家的时间~ 🥝JDK版本切换 – Windows
如果是后面要将本地的后端代码也一起部署在 Docker 上运行的话, linux 也是要安装 JDK17以上版本
这里也同样是为了压缩文章篇幅, 直接放一个我之前写好的教程吧~ 🐅22. Docker 部署 JDK11
JDK 11 和 JDK 17 是一个道理的, 只需要将包切换成 JDK17 即可~
2.2 MySQL 安装
[Step 1] : 拉取 MYSQL 镜像
docker pull mysql:8.0.33
[Step 2] : 创建 MYSQL 相关目录 ➡️ 启动 MYSQL 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器
# 创建 MYSQL 相关目录mkdir-p /data/mysql/{conf,log,data}
# 启动 MYSQL 容器docker run -p3306:3306 --name mysql -eMYSQL_ROOT_PASSWORD=ovoAdmin123 -d mysql:8.0.33
# 拷贝文件 dockercp mysql:/var/log /data/mysql
dockercp mysql:/etc/my.cnf /data/mysql/conf
# 授权文件夹chmod777 /data/mysql/{log,data}chmod644 /data/mysql/conf/my.cnf
# 删除容器dockerrm-f mysql
- 对应的目录下会创建有相应的文件夹
[Step 3] : 创建 MYSQL 容器
docker run -p3306:3306 --name mysql \-v /data/mysql/log:/var/log/mysql \-v /data/mysql/data:/var/lib/mysql \-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \-eTZ=Asia/Shanghai --restart=always \-eMYSQL_ROOT_PASSWORD=123456\-d mysql:8.0.33
- 相关参数解释 :
- 1.
docker run
: 创建并运行一个容器, -d是让容器在后台运行 - 2.
-- name mysql
: 给容器起一个名字, 名字必须唯一 - 3.
-v /data/mysql/log:/var/log/mysql
: 挂载配置文件 - 4.
-p 3306:3306
: 设置端口映射 - 5.
-e KEY = VALUE
: 设置环境变量 -e就是environment的意思 - 6.
TZ=Asia/Shanghai
: 设置数据库时区为东八区 - 7.
--restart=always
: 自启动 ( 服务器重启后会自启动 ) - 8.
MYSQL_ROOT_PASSWORD
: 数据库密码 - 9.
mysql
:指定运行的镜像的名字, 后面可以跟版本号, 如果不跟默认最新版
[Step 4] : 查看 MYSQL 日志
docker logs -f mysql
- 没有 Error 就是启动成功了
[Step 5] : 使用工具连接 MYSQL
- 填写连接信息
- 测试连接成功 !
到这里就将 MySQL 部署成功啦~
2.3 ElasticSearch 安装
这个的安装就有点小复杂啦~ 不过跟着我的步骤来就会简单很多!! (其实都是CV哈哈哈~)
我这里偷懒直接装的 7.14.0 版本, 最后测试也是没问题的~ 不过尽量还是保持和二哥的版本一致~
[Step 1] : 拉取 ElasticSearch 镜像
docker pull elasticsearch:7.14.0
[Step 2] : 创建网络➡️创建目录➡️启动容器➡️拷贝文件➡️授权文件➡️删除容器
# 创建网络docker network create elastic
# 创建目录mkdir-p /data/elasticsearch/{config,data,logs,plugins}
# 启动容器docker run --name elasticsearch --restart=always \-p9200:9200 -p9300:9300 \--privileged--network elastic \-e"discovery.type=single-node"\-d elasticsearch:7.14.0
# 拷贝文件dockercp-a elasticsearch:/usr/share/elasticsearch/config/ /data/elasticsearch
dockercp-a elasticsearch:/usr/share/elasticsearch/data/ /data/elasticsearch
dockercp-a elasticsearch:/usr/share/elasticsearch/logs/ /data/elasticsearch
dockercp-a elasticsearch:/usr/share/elasticsearch/plugins/ /data/elasticsearch
# 授权文件chmod-R777 /data/elasticsearch/{config,data,logs,plugins}
# 删除容器dockerrm-f elasticsearch
[Step 3] : 启动 ElasticSearch 容器
docker run --name elasticsearch --restart=always \-p9200:9200 -p9300:9300 \--privileged=true --network elastic \-eES_JAVA_OPTS="-Xms256m -Xmx512m"\-e"discovery.type=single-node"\-eKEYSTORE_USERNAME=elastic \-eKEYSTORE_PASSWORD=elastic \-e"ingest.geoip.downloader.enabled=false"\-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-v /data/elasticsearch/data:/usr/share/elasticsearch/data \-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \-v /data/elasticsearch/config:/usr/share/elasticsearch/config \-d elasticsearch:7.14.0
相关参数解释 :
- 1.
--privileged=true
: 以特权模式运行容器,类似于主机上的 root 权限。 - 2.
--network elastic
: 将容器加入名为elastic
的 Docker 网络中,这可以方便容器之间的通信。 - 3.
-e ES_JAVA_OPTS="-Xms256m -Xmx512m"
: 用于配置 JVM 的最大最小堆内存。 - 4.
-e "discovery.type=single-node"
: 设置 Elasticsearch 为单节点模式 - 5.
-e KEYSTORE_USERNAME=elastic
和-e KEYSTORE_PASSWORD=elastic
: 设置 Elasticsearch 的认证用户名和密码为elastic
,这些变量将用于存储在密钥库中的凭据。
[Step 4] : 访问 ElasticSearch 服务
# IP地址改成自己的
http://172.29.32.233:9200/
[Step 5] : 安装 IK 分词器 ~
在这里下载与 elasticsearch 对应版本的 ik 分词器 : https://release.infinilabs.com/analysis-ik/stable/
比如我的是 7.14.0 就下载这个
下载之后上传到我们挂载的 plugins 文件夹下, 之后再重启 elasticsearch 即可
ik 文件夹的内容如下 :
重启 elasticsearch :
docker restart elasticsearch
测试是否安装成功 : (记得换成自己的ip地址)
curl-X GET "你的ip地址:9200/_analyze?pretty"-H'Content-Type: application/json' -d'
{
"analyzer": "ik_smart",
"text": "中华人民共和国万岁"
}
'
出现如下图结果即为 ik 分词器生效啦~
2.4 Redis 安装
[Step 1] : 拉取 Redis 镜像, 推荐使用 7 的 Redis 版本
docker pull redis:7.0.12
[Step 2] : 创建 Redis 相关目录 ➡️ 启动 Redis 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器
# 创建 Redis 相关目录mkdir-p /data/redis/{conf,data,log}touch /data/redis/log/redis.log
touch /data/redis/conf/redis.conf
# 启动 Redis 容器docker run -p6379:6379 --name redis -d redis:7.0.12
# 拷贝文件dockercp redis:/data /data/redis
dockercp redis:/etc/redis.log /data/redis/log
dockercp redis:/etc/redis/redis.conf /data/redis/conf
# 授权文件夹chmod-R777 /data/redis/conf/redis.conf /data/redis/log/redis.log /data/redis/data
# 删除容器dockerrm-f redis
[Step 3] : 创建 Redis 容器
docker run --name redis \-p6379:6379 --restart=always \-v /data/redis/data:/data \-v /data/redis/log/redis.log:/etc/redis.log \-v /data/redis/conf:/etc/redis/redis.conf \-d redis:7.0.12 redis-server /etc/redis/redis.conf
[Step 4] : 查看 Redis 日志
docker logs -f redis
[Step 5] : 用Redis连接工具查看是否成功部署 Redis
- 填写 Redis 连接信息
- 连接成功 !
2.5 Minio 安装
[Step 1] : 拉取 Minio 镜像
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z
[Step 2] : 启动 Minio 容器
docker run --name minio --restart=always \-p9000:9000 -p9090:9090 \-e"MINIO_ROOT_USER=minio"\-e"MINIO_ROOT_PASSWORD=minio123456"\-v /data/minio/data:/data \-v /data/minio/conf:/root/.minio \-d minio/minio:RELEASE.2025-04-22T22-12-26Z server \
/data --console-address ":9090"-address":9000"
[Step 3] : 访问 Minio 控制台
# 换成自己的IP地址
http://172.29.32.233:9090/login
[Step 4] : 创建 Bucket 容器
[Step 5] : 修改访问权限为 public
2.6Kafka 安装
Kafka对于zookeeper是强依赖,保存kafka相关的节点数据,
所以安装Kafka之前必须先安装zookeeper
创建一个网络用于两者互连
docker network create kafka-net
[Step 1] : 部署 Zookeeper -> 拉取 Zookeeper 镜像 ➡️ 启动 Zookeeper 容器
docker pull zookeeper:3.4.14
docker run -d--name zookeeper --network kafka-net zookeeper:3.4.14
[Step 2] : 部署 Kafka 服务 -> 拉取镜像 ➡️ 启动Kafka容器
# 拉取 Kafka 镜像docker pull wurstmeister/kafka:2.12-2.3.1
# 启动Kafka容器 - 记得修改成自己的IP地址还有Kafka的端口docker run -d--name kafka \--network kafka-net \--envKAFKA_ADVERTISED_HOST_NAME=192.168.100.233 \--envKAFKA_ZOOKEEPER_CONNECT=192.168.100.233:2181 \--envKAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.233:9092 \--envKAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \--envKAFKA_HEAP_OPTS="-Xmx256M -Xms256M"\-p9092:9092 wurstmeister/kafka:2.12-2.3.1
[Step 3] : 查看 Kafka 启动日志
docker logs -f kafka
b
[Step 4] : 创建对应的主题和队列
进入 Kafka 容器
dockerexec-it kafka bash
切换到 Kafka 的 bin 目录
cd /opt/kafka/bin
创建文件处理主题
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1--partitions1--topic file-processing
创建向量化主题
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1--partitions1--topic vectorizatio
具体操作如下图 :
3.启动项目
前置部署 : 本地部署 DeepSeek 参考 -> 🍒0. 本地部署 Deepseek-R1
(不想本地部署的话就直接去DeepSeekAPI开放平台充点钱拿个Key就行 DeepSeek Platform)
3.1 启动后端 – Windows 版
首先把代码拉取下来, 刷新 maven 确保依赖都正确引入, 修改项目的 JDK为17及以上版本
之后就是最简单的修改对应的配置信息啦~
派聪明, 启动 ~
出现这个说明就启动成功啦~ 你已经离成功只差 1% 了 !!!
可以通过一下命令来查看索引是否创建成功~
curl-X GET 'http://你的ip地址:9200/knowledge_base/_mapping?pretty'-u'elastic:elastic'
配置好 DeepSeek 的 Key, 分清楚是本地还是调官方的API, 因为请求地址不一样
这是本地的配置 :
这是调官方API的配置 :
Windows 后端到此就结束啦~
3.2 启动后端 – Docker 版
上面的配置信息都填写正确之后, 将后端打成 jar 包, 然后上传到服务器中
编写 Dockerfile 文件, 可以直接拷贝我的
FROM eclipse-temurin:17-jre
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
COPY SmartPAI-0.0.1-SNAPSHOT.jar /pai-smart.jar
ENTRYPOINT ["java","-jar","/pai-smart.jar"]
将 jar 包和 Docker 文件放在同一个目录下, 然后进入这个目录, 比如我的在 /data/pai-smart/
cd /data/pai-smart
将 jar 包打包成镜像然后再部署到 Docker 上即可
docker build -t pai-smart:v1.0 .
启动后端项目
docker run -d--name pai-smart -p38848:38848 pai-smart:v1.0
查看启动日志, 检查是否启动成功
docker logs -f pai-smart
3.3 启动前端
没有拉取前端代码的话, 也可以直接访问前端测试页面 ~
http://localhost:8081/test.html
有前端代码的话, 将代码里的 fronted
文件夹放到对应的前端软件然后 pnpm i
再 pnpm dev run
之后就可以使用啦~
文章到这基本就结束啦, 非常感谢小伙伴可以耐心地看完~