Docker(球友参考)
本文最后更新于10 天前,其中的信息可能已经过时,如有错误请发送邮件到2260856635@qq.com

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. 1.docker run: 创建并运行一个容器, -d是让容器在后台运行
  2. 2.-- name mysql: 给容器起一个名字, 名字必须唯一
  3. 3.-v /data/mysql/log:/var/log/mysql : 挂载配置文件
  4. 4.-p 3306:3306: 设置端口映射
  5. 5.-e KEY = VALUE: 设置环境变量 -e就是environment的意思
  6. 6.TZ=Asia/Shanghai : 设置数据库时区为东八区
  7. 7.--restart=always : 自启动 ( 服务器重启后会自启动 )
  8. 8.MYSQL_ROOT_PASSWORD : 数据库密码
  9. 9.mysql:指定运行的镜像的名字, 后面可以跟版本号, 如果不跟默认最新版

[Step 4] : 查看 MYSQL 日志

docker logs -f mysql
  • 没有 Error 就是启动成功了

[Step 5] : 使用工具连接 MYSQL


  • 填写连接信息
  • 测试连接成功 !

到这里就将 MySQL 部署成功啦~

这个的安装就有点小复杂啦~ 不过跟着我的步骤来就会简单很多!! (其实都是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. 1.--privileged=true: 以特权模式运行容器,类似于主机上的 root 权限。
  2. 2.--network elastic: 将容器加入名为 elastic 的 Docker 网络中,这可以方便容器之间的通信。
  3. 3.-e ES_JAVA_OPTS="-Xms256m -Xmx512m": 用于配置 JVM 的最大最小堆内存。
  4. 4.-e "discovery.type=single-node": 设置 Elasticsearch 为单节点模式
  5. 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 ipnpm dev run

之后就可以使用啦~

文章到这基本就结束啦, 非常感谢小伙伴可以耐心地看完~

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇