docker安装nacos并配置mysql持久化
安装mysql
-
前置工作
docker pull mysql:5.7.32 版本自行选择,大于5.6版本即可
# 创建挂载目录 mkdir -p home/docker/mysql/conf mkdir -p /home/docker/mysql/logs mkdir -p /home/docker/mysql/data
-
安装
docker run --restart=always -p 3306:3306 --name mysql -v /home/docker/mysql/conf:/etc/mysql/conf.d # 挂载目录 -v /home/docker/mysql/logs:/var/log/mysql -v /home/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 # 初始化密码 -d mysql:5.7.32 # -d 后台启动
-
开放远程访问
# 进入mysql容器 docker exec -it mysql /bin/bash # 创建用于远程访问的用户 CREATE USER 'yourName'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; GRANT ALL PRIVILEGES ON *.* TO 'yourName'@'%'; FLUSH PRIVILEDGES;
-
运行nacos脚本
脚本文件:nacos-db.sql
安装nacos
-
前置工作
# 获取镜像 docker pull nacos/nacos-server:1.4.0 # 创建本地挂载目录 mkdir -p /home/docker/nacos/conf/ touch custom.properties mkdir -p /home/docker/nacos/logs
-
安装
# nacos安装命令 docker run -d -p 8848:8848 -e MODE=standalone -e PREFER_HOST_MODE=hostname -e SPRING_DATASOURCE_PLATFORMSPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=192.168.56.101 -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_DB_NAME=nacos -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=123456 -e MYSQL_DATABASE_NUM=1 -v /home/docker/nacos/conf/custom.properties:/home/nacos/init.d/custom.properties -v /home/docker/nacos/logs:/home/nacos/logs --restart always --name nacos nacos/nacos-server:1.4.0
命令说明
- -v 挂载目录,规则与端口映射相同。
- **-d ** 表示后台启动redis
- **-e MODE=standalone ** 单节点启动
- -e MYSQL_SERVICE xxxxx 中间配置为配置mysql持久化
具体配置参数参考官方文档
参数名 描述 可选项 默认值 MODE cluster模式/standalone模式 cluster/standalone cluster NACOS_SERVERS nacos cluster地址 eg. ip1,ip2,ip3 PREFER_HOST_MODE 是否支持hostname hostname/ip ip NACOS_SERVER_PORT nacos服务器端口 8848 NACOS_SERVER_IP 多网卡下的自定义nacos服务器IP SPRING_DATASOURCE_PLATFORM standalone 支持 mysql mysql/empty empty MYSQL_MASTER_SERVICE_HOST mysql 主节点host MYSQL_MASTER_SERVICE_PORT mysql 主节点端口 3306 MYSQL_MASTER_SERVICE_DB_NAME mysql 主节点数据库 MYSQL_MASTER_SERVICE_USER 数据库用户名 MYSQL_MASTER_SERVICE_PASSWORD 数据库密码 MYSQL_SLAVE_SERVICE_HOST mysql从节点host MYSQL_SLAVE_SERVICE_PORT mysql从节点端口 3306 MYSQL_DATABASE_NUM 数据库数量 2 JVM_XMS -Xms 2g JVM_XMX -Xmx 2g JVM_XMN -Xmn 1g JVM_MS -XX:MetaspaceSize 128m JVM_MMS -XX:MaxMetaspaceSize 320m NACOS_DEBUG 开启远程调试 y/n n TOMCAT_ACCESSLOG_ENABLED server.tomcat.accesslog.enabled false 修改配置文件
进入本地挂载的目录下 cd /home/docker/nacos/conf/
修改配置文件 vim custom.properties 内容如下,主要是配置mysql
# spring server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos} server.contextPath=/nacos server.port=${NACOS_APPLICATION_PORT:8848} spring.datasource.platform=mysql nacos.cmdb.dumpTaskInterval=3600 nacos.cmdb.eventTaskInterval=10 nacos.cmdb.labelTaskInterval=300 nacos.cmdb.loadDataAtStart=false db.num=${MYSQL_DATABASE_NUM:1} db.url.0=jdbc:mysql://192.168.56.101:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true # spring server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos} server.contextPath=/nacos server.port=${NACOS_APPLICATION_PORT:8848} spring.datasource.platform=mysql nacos.cmdb.dumpTaskInterval=3600 nacos.cmdb.eventTaskInterval=10 nacos.cmdb.labelTaskInterval=300 nacos.cmdb.loadDataAtStart=false db.num=${MYSQL_DATABASE_NUM:1} db.url.0=jdbc:mysql://192.168.56.101:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=123456 ### The auth system to use, currently only 'nacos' is supported: nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos} ### The token expiration in seconds: nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000} ### The default token: nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789} ### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay. nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false} server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false} server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D # default current work dir server.tomcat.basedir= ## spring security config ### turn off security nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/** # metrics for elastic search management.metrics.export.elastic.enabled=false management.metrics.export.influx.enabled=false nacos.naming.distro.taskDispatchThreadCount=10 nacos.naming.distro.taskDispatchPeriod=200 nacos.naming.distro.batchSyncKeyCount=1000 nacos.naming.distro.initDataRatio=0.9 nacos.naming.distro.syncRetryDelay=5000 nacos.naming.data.warmup=true
测试nacos
-
配置完成后,浏览器访问[你的ip]/8848/nacos 如图所示:
-
点击右边+号进行配置新增
-
查看数据库中config_info表,已经存储了新增的数据
-
获取配置
curl -X GET "http://ip:8848/nacos/v1/cs/configs?dataId=test&group=DEFAULT_GROUP"
-
之后停掉nacos服务,从docker中删除nacos容器并重新部署,测试持久化是否成功
# nacos 为启动时的 --name设置的值,或者直接使用容器id docker stop nacos docker rm [容器id] #之后重新执行之前的启动nacos容器命令
重新部署镜像后访问控制面板,创建的配置文件仍然存在,mysql持久化生效