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保存数据:
-
进入刚才下载和解压的nacos server安装包,文件nacos/conf/application.properties就是我们所需的配置文件;
-
将文件application.properties复制到docker-compose.yml所在目录;
-
打开文件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
- 打开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配置中心》完全一致,下面给出关键步骤:
- 在docker-compose.yml文件所在目录执行以下命令,即可启动所有容器:
docker-compose up -d
-
我这里宿主机的IP是192.168.121.131,登录Nacos的web页面,创建应用所需的配置项,地址是:http://192.168.121.131:8848/nacos ,用户名和密码都是nacos;
-
如下图,新增一个配置项:
- 浏览器访问地址:http://192.168.121.131:8080/test ,如下图,可见应用已经从nacos取得了配置:
再来看看mysql的数据;
-
在宿主机执行命令docker exec -it mysql /bin/bash进入容器;
-
进入容器后,执行命令mysql -h127.0.0.1 -uroot -p123456连接MySQL;
-
参考以下的命令,检查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)
先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以扫码领取!
总目录展示
该笔记共八个节点(由浅入深),分为三大模块。
高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。
一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
由于内容太多,这里只截取部分的内容。
,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
[外链图片转存中…(img-FVOzuff8-1711204563809)]
[外链图片转存中…(img-5UkgmWUu-1711204563810)]
由于内容太多,这里只截取部分的内容。
需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!