Docker下Nacos持久化配置

  1. docker-compose.yml中增加mysql,并设置容器创建时执行前面的sql脚本;

  2. 准备nacos配置文件给docker-compose.yml中nacos容器使用;

  3. 启动,验证功能正常;

  4. 检查数据库中是否有数据;

  5. 删除容器,再重建容器,确认数据可以完全恢复;

接下来一起实战吧。

准备初始化nacos数据库的sql脚本

  1. 此sql用于创建nacos server运行所需的表和数据,去下载nacos server安装包,地址是:https://github.com/alibaba/nacos/releases/download/1.1.0/nacos-server-1.1.0.tar.gz ;

  2. 下载的安装包解压后,文件nacos/conf/nacos-mysql.sql就是我们所需的sql脚本;

  3. 打开此脚本,可见内容中没有创建数据库,这样的脚本在mysql的docker容器内无法自动执行,需要在sql文件的开始位置添加以下内容:

CREATE DATABASE nacos_config;

use nacos_config;

  1. 将文件nacos-mysql.sql放在docker-compose.yml所在目录下;

docker-compose.yml中增加mysql

接下来在容器编排文件docker-compose.yml中增加mysql容器:

  1. 在docker-compose.yml中增加mysql容器,新增的mysql编排信息放在最前面,内容如下:

mysql:

image: mysql:5.7.27

container_name: mysql

restart: unless-stopped

volumes:

  • ./nacos-mysql.sql:/docker-entrypoint-initdb.d/nacos-mysql.sql

  • ./mysqldata:/var/lib/mysql

command: --default-authentication-plugin=mysql_native_password

environment:

MYSQL_ROOT_PASSWORD: 123456

上述内容有几处需要注意:

a. 第一个volumes参数将宿主机的nacos-mysql.sql映射到容器的/docker-entrypoint-initdb.d/目录,mysql容器启动时会执行这个目录下的所有以sh和sql结尾的文件;

b. 第二个volumes参数将docker-compose.yml文件所在位置的mysqldata目录映射到容器的/var/lib/mysql目录,这样数据库所有数据都保存在宿主机上了,此mysqldata文件夹容器启动时自动创建;

c. command参数设置了mysql的鉴权方式是密码方式;

d. 环境变量MYSQL_ROOT_PASSWORD设置了mysql的root密码为123456;

准备nacos配置文件给docker-compose.yml中nacos容器使用

接下来需要设置nacos server的参数,将mysql相关参数配置好,这样nacos server启动后就会使用mysql保存数据:

  1. 进入刚才下载和解压的nacos server安装包,文件nacos/conf/application.properties就是我们所需的配置文件;

  2. 将文件application.properties复制到docker-compose.yml所在目录;

  3. 打开文件application.properties,在尾部新增以下内容,这些是mysql相关的配置:

spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://mysql:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

db.user=root

db.password=123456

  1. 打开docker-compose.yml文件,找到nacos的配置,修改后的内容如下:

nacos:

image: bolingcavalry/nacosserver:0.0.1

container_name: nacos

restart: unless-stopped

volumes:

  • ./application.properties:/root/nacos/conf/application.properties

depends_on:

  • mysql

ports:

  • ‘8848:8848’

如上所示,nacos的配置有两处修改:

a. 增加volumes,将宿主机的application.properties文件映射到容器中,作为nacos的配置文件;

b. 增加依赖配置,在mysql容器启动成功后才会启动nacos;

完整的docker-compose.yml内容如下:

version: ‘2’

services:

mysql:

image: mysql:5.7.27

container_name: mysql

restart: unless-stopped

volumes:

  • ./nacos-mysql.sql:/docker-entrypoint-initdb.d/nacos-mysql.sql

  • ./mysqldata:/var/lib/mysql

command: --default-authentication-plugin=mysql_native_password

ports:

  • ‘3306:3306’

environment:

MYSQL_ROOT_PASSWORD: 123456

nacos:

image: bolingcavalry/nacosserver:0.0.1

container_name: nacos

restart: unless-stopped

volumes:

  • ./application.properties:/root/nacos/conf/application.properties

depends_on:

  • mysql

ports:

  • ‘8848:8848’

config-demo:

image: bolingcavalry/nacosconfigdemo:1.0-SNAPSHOT

container_name: config-demo

restart: unless-stopped

depends_on:

  • nacos

ports:

  • ‘8080:8080’

至此,准备完毕,可以验证了;

验证

首先验证nacos的配置服务是否正常,验证方法和操作步骤和《Docker下,两分钟极速体验Nacos配置中心》完全一致,下面给出关键步骤:

  1. 在docker-compose.yml文件所在目录执行以下命令,即可启动所有容器:

docker-compose up -d

  1. 我这里宿主机的IP是192.168.121.131,登录Nacos的web页面,创建应用所需的配置项,地址是:http://192.168.121.131:8848/nacos ,用户名和密码都是nacos;

  2. 如下图,新增一个配置项:

在这里插入图片描述

  1. 浏览器访问地址:http://192.168.121.131:8080/test ,如下图,可见应用已经从nacos取得了配置:

在这里插入图片描述

再来看看mysql的数据;

  1. 在宿主机执行命令docker exec -it mysql /bin/bash进入容器;

  2. 进入容器后,执行命令mysql -h127.0.0.1 -uroot -p123456连接MySQL;

  3. 参考以下的命令,检查MySQL的数据,可见刚才配置的数据都存入了MySQL:

mysql> show databases;

±-------------------+

| Database |

±-------------------+

| information_schema |

| mysql |

| nacos_config |

| performance_schema |

| sys |

±-------------------+

5 rows in set (0.00 sec)

mysql> use nacos_config;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;

±-----------------------+

| Tables_in_nacos_config |

±-----------------------+

| config_info |

| config_info_aggr |

| config_info_beta |

| config_info_tag |

| config_tags_relation |

| group_capacity |

| his_config_info |

| roles |

| tenant_capacity |

| tenant_info |

| users |

±-----------------------+

11 rows in set (0.00 sec)

mysql> select * from config_info \G

*************************** 1. row ***************************

id: 1

data_id: my-nacos-config.yaml

group_id: BOLING_CAVALRY

content: bolingcavalry:

desc: desc from nacos yaml config

md5: f44c8fd76e8da757380e8f7ddabe6e70

gmt_create: 2019-08-31 13:53:01

gmt_modified: 2019-08-31 13:53:01

src_user: NULL

src_ip: 192.168.121.1

app_name:

tenant_id:

c_desc: nacos config demo

c_use: NULL

effect: NULL

type: yaml

c_schema: NULL

1 row in set (0.00 sec)

至此,可以确定在Docker环境下,Nacos使用MySQL进行持久化存储操作成功,接下来我们验证即使容器被删除,数据也可以恢复

删除容器,再重建容器,确认数据可以完全恢复

  1. 在docker-compose.yml所在的目录下执行以下命令,会停止所有容器并将其删除:

docker-compose down

  1. 执行docker ps -a,确认宿主机上已经没有任何容器存在:

[root@maven test]# docker-compose down

Stopping config-demo … done

Stopping nacos … done

Stopping mysql … done

Removing config-demo … done

Removing nacos … done

Removing mysql … done

Removing network test_default

[root@maven test]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

[外链图片转存中…(img-eEAOPcEH-1713823819815)]

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

[外链图片转存中…(img-V1TUWA9O-1713823819815)]

[外链图片转存中…(img-8GNpRhVb-1713823819815)]

[外链图片转存中…(img-7VDUYoSf-1713823819815)]

[外链图片转存中…(img-vRByF9o9-1713823819815)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值