下载docker

http://t.csdn.cn/lvRFW

创建自定义网络docker network create sp,才能在内网中使用容器名访问。

使用docker安装mysql:5.7

获取镜像:docker pull mysql:5.7

查看镜像列表,检查是否成功拉取:docker images

运行mysql镜像(创建容器):

1
docker run --privileged=true --name sp_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=searchprojects -d  -v /usr/local/docker_data/mysql/data:/var/lib/mysql -v /usr/local/docker_data/mysql/conf:/etc/mysql/ -v /usr/local/docker_data/mysql/logs:/var/log/mysql mysql:5.7

使用docker inspect sp_mysql查看数据库的ip,并记录。

image-20230414213555391

本地连接数据库,将数据导入。

可能会出现问题:

(68条消息) Docker配置MySQL容器+远程连接(全流程)_远程访问mysql docker 镜像_卷、就硬卷的博客-CSDN博客

安装Redis

使用命令安装redis:docker pull redis:3.2.1

创建挂载目录文件:·

1
2
3
4
## 创建目录
mkdir -p /usr/local/docker_data/redis/conf
## 创建文件
touch /usr/local/docker_data/redis/conf/redis.conf

运行容器:

1
2
docker run -d --name sp_redis -p 6379:6379 --restart unless-stopped -v /usr/local/docker_data/redis/data:/data -v /usr/local/docker_data/redis/conf/redis.conf:/etc/redis/redis.conf redis:3.2.1  redis-server /etc/redis/redis.conf --requirepass searchprojects

使用docker inspect sp_redis查看容器IP

image-20230414230601352

安装elasticsearch

下载es镜像文件或上传本地es.tar文件

创建挂载的目录

1
2
3
4
5
# 可访问IP
http.host: 0.0.0.0
# 跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
1
2
3
4
docker run --name sp_es -p 9200:9200  -p 9300:9300  -e  ES_JAVA_OPTS="-Xms256m -Xmx256m"   
-e "discovery.type=single-node" -v /usr/local/docker_data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
-v /usr/local/docker_data/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:5.6.16

注意要在服务器中的安全组中开放9200接口才能实现本地访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
http.host: 0.0.0.0
cluster.name: "sp_es"

##集群名称
#cluster.name: "sp_es"
##本节点名称
#node.name: node-1
##是否master节点
#node.master: true
##是否存储数据
#node.data: true
##跨域设置
#http.cors.enabled: true
#http.cors.allow-origin: "*"
##http端口
#http.port: 9200
##java端口
#transport.tcp.port: 9300
##可以访问es集群的ip 0.0.0.0表示不绑定
#network.bind_host: 0.0.0.0
##es集群相互通信的ip 0.0.0.0默认本地网络搜索
#network.publish_host: 0.0.0.0
#transport.host: 0.0.0.0
#network.host: 47.120.3.4
#
##6.x配置
#discovery.zen.minimum_master_nodes: 0

部署kibana,给es提供一个可视化的窗口

可以网上拉取镜像也可以本地上传加载。

1
2
3
4
5
6
docker run -d \
--name sp_kibana \
-e ELASTICSEARCH_HOSTS=http://sp_es:9200 \
--network=sp \
-p 5601:5601 \
kibana:7.12.1
1
2
3
nohup java -jar /usr/local/app/searchprojects/searchproject.jar
>/usr/local/app/sp/run/demo.log 2>&1 &

打包jar包

1
进入jar包与dockerfile所在的文件夹,docker build -t searchproject:1.0 .
1
2
运行  docker run -d -p 80:80  --name sp_app searchproject:1.0 --network sp

BUG

1
java.lang.AbstractMethodError: org.redisson.spring.data.connection.RedissonReactiveRedisConnection.close()V

image-20230416213454526

1
NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{BYdoQaaiQROUfRCr4nyeTQ}{172.19.0.5}{172.19.0.5:9300}]]

注意springboot中elasticsearch的版本与服务机上的要一致。

(74条消息) 记录一下NoNodeAvailableException异常的解决办法_fxwwq1823tcd9的博客-CSDN博客