docker安装nacos并配置mysql持久化

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

    1. 配置完成后,浏览器访问[你的ip]/8848/nacos 如图所示:

      image-20201231153547142

    2. 点击右边+号进行配置新增

      image-20201231153649190

    3. 查看数据库中config_info表,已经存储了新增的数据

    4. 获取配置

      curl -X GET "http://ip:8848/nacos/v1/cs/configs?dataId=test&group=DEFAULT_GROUP"
      
    5. 之后停掉nacos服务,从docker中删除nacos容器并重新部署,测试持久化是否成功

      # nacos 为启动时的 --name设置的值,或者直接使用容器id
      docker stop nacos
      docker rm [容器id]	
      
      #之后重新执行之前的启动nacos容器命令
      

      重新部署镜像后访问控制面板,创建的配置文件仍然存在,mysql持久化生效

原文地址:https://www.cnblogs.com/FriendA1/p/14217328.html