一. Nacos简介
Nacos致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos可持久化配置文件,需要使用到数据库MySQL,下面咱们开始搭建mysql数据库;
1.1 搭建MySQL
Nacos1.3.1以后使用MySQL8作为数据源,这里咱们就使用mysql8.0.27版本;
1.1.1 拉取MySQL镜像
[root@freedev morton]# docker search mysql
目前比较官方的镜像有两个:
1. mysql,由Docker团队维护,运行mysql:latest即可使用,版本查看地址
2. mysql/mysql-server,由Oracle的MySQL团队维护,运行 mysql/mysql-server:latest即可使用,版本查看地址
本次安装咱们选用Oracle官方MySQL团队维护的镜像,安装文档地址
[root@freedev morton]# docker pull mysql/mysql-server:8.0.27
1.1.2. 准备MySQL配置文件my.cnf
[mysqld]
user=mysql
character-set-server=utf8
collation-server=utf8_unicode_ci
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
1.1.3. 创建MySQL数据盘挂载目录及配置文件挂载目录
[root@freedev data]# mkdir -p /data/mysql8/mysql-data /data/mysql8/conf
1.1.4. 编写docker-compose.yml,创建数据库容器
version: '3.3'
services:
mysql:
image: mysql/mysql-server:8.0.27
container_name: mysql8
restart: always
volumes:
- /data/mysql8/conf/my.cnf:/etc/mysql/my.cnf:rw
- /data/mysql8/mysql-data:/var/lib/mysql:rw
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=Asia/Shanghai
- MYSQL_ROOT_HOST=%
- MYSQL_ROOT_PASSWORD=password
ports:
- 3306:3306
1.1.5. 启动容器检查是否正常运行
[root@freedev log]# docker-compose up -d
Creating network "mysql8_default" with the default driver
Creating mysql8 ... done
[root@freedev log]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b634cec6f15 mysql/mysql-server:8.0.27 "/entrypoint.sh mysq…" 4 seconds ago Up 3 seconds (health: starting) 33060-33061/tcp, 0.0.0.0:3307->3306/tcp mysql8
1.1.6. 使用Navicat链接MySQL8,初始化nacos_config数据库
百度网盘链接: https://pan.baidu.com/s/1UlIEOr9Bw9F_sjKxNFhODw 提取码: uj38
1.2 搭建Nacos
1.2.1 拉取Nacos镜像
[root@freedev morton]# docker pull nacos/nacos-server:2.0.3
1.2.2 编写docker-compose
version: '3.3'
services:
nacos:
image: nacos/nacos-server:2.0.3
restart: always
container_name: nacos
privileged: true
environment:
- TZ="Asia/Shanghai"
- PREFER_HOST_MODE=hostname
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=127.0.0.1
- MYSQL_SERVICE_PORT=3307
- MYSQL_SERVICE_USER=username
- MYSQL_SERVICE_PASSWORD=password
- MYSQL_SERVICE_DB_NAME=nacos_config
- NACOS_AUTH_ENABLE=true
- NACOS_APPLICATION_PORT=8848
volumes:
- ./logs:/home/nacos/logs
ports:
- 8848:8848
network_mode: host
启动镜像访问http://localhost:8848/
注: 如果启动时抛出时区异常
,
java.sql.SQLException: The server time zone value xxxxx is unrecognized or represents more than one time zone
可添加启动参数即可解决: MYSQL_SERVICE_DB_PARAM
characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8