Docker 环境 Nacos2 MySQL8的详细操作

2023-12-01 0 302
目录
  • 1 拉取镜像
    • 1.1 创建目录
    • 1.2 拉取镜像
  • 2 配置文件
    • 2.1 nacos-logback.xml
    • 2.2 custom.properties
  • 3 准备数据库
    • 3.1 创建数据库
    • 3.2 创建表结构
  • 4 启动容器
    • 5 访问 Nacos

      本文介绍 docker 环境下安装并单机运行 Nacos2,使用 docker 环境下的 MySQL 8 存储数据。

      1 拉取镜像

      1.1 创建目录

      在硬盘上创建 nacos 的有关目录:

      mkdir -p /Users/yygnb/dockerMe/nacos/conf /Users/yygnb/dockerMe/nacos/logs /Users/yygnb/dockerMe/nacos/data /Users/yygnb/dockerMe/nacos/init.d

      为该目录添加权限:

      chown 200 -R /Users/yygnb/dockerMe/nacos

      1.2 拉取镜像

      搜索镜像:

      docker search nacos

      搜索结果:

      Docker 环境 Nacos2 MySQL8的详细操作

      2 配置文件

      2.1 nacos-logback.xml

      在 conf 目录中创建配置文件 nacos-logback.xml:

      <?xml version=\”1.0\” encoding=\”UTF-8\”?>
      <configuration scan=\”true\” scanPeriod=\”10 seconds\”>

      <springProperty scope=\”context\” name=\”logPath\” source=\”nacos.logs.path\” defaultValue=\”${nacos.home}/logs\”/>
      <property name=\”LOG_HOME\” value=\”${logPath}\”/>

      <appender name=\”cmdb-main\”
      class=\”ch.qos.logback.core.rolling.RollingFileAppender\”>
      <file>${nacos.home}/logs/cmdb-main.log</file>
      <append>true</append>
      <rollingPolicy class=\”ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy\”>
      <fileNamePattern>${nacos.home}/logs/cmdb-main.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
      <maxFileSize>2GB</maxFileSize>
      <maxHistory>7</maxHistory>
      <totalSizeCap>7GB</totalSizeCap>
      <cleanHistoryOnStart>true</cleanHistoryOnStart>
      </rollingPolicy>
      <encoder>
      <Pattern>%date %level %msg%n%n</Pattern>
      <charset>UTF-8</charset>
      </encoder>
      </appender>

      <appender name=\”rootFile\”
      class=\”ch.qos.logback.core.rolling.RollingFileAppender\”>
      <file>${LOG_HOME}/nacos.log</file>
      <append>true</append>
      <rollingPolicy class=\”ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy\”>
      <fileNamePattern>${LOG_HOME}/nacos.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
      <maxFileSize>50MB</maxFileSize>
      <maxHistory>7</maxHistory>
      <totalSizeCap>512MB</totalSizeCap>
      <cleanHistoryOnStart>true</cleanHistoryOnStart>
      </rollingPolicy>
      <encoder>
      <Pattern>%date %level %msg%n%n</Pattern>
      <charset>UTF-8</charset>
      </encoder>
      </appender>

      <appender name=\”CONSOLE\” class=\”ch.qos.logback.core.ConsoleAppender\”>
      <encoder>
      <Pattern>%date %level %msg%n%n</Pattern>
      <charset>UTF-8</charset>
      </encoder>
      </appender>

      <appender name=\”naming-server\”
      class=\”ch.qos.logback.core.rolling.RollingFileAppender\”>
      <file>${LOG_HOME}/naming-server.log</file>
      <append>true</append>
      <rollingPolicy class=\”ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy\”>
      <fileNamePattern>${LOG_HOME}/naming-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
      <maxFileSize>1GB</maxFileSize>
      <maxHistory>7</maxHistory>
      <totalSizeCap>7GB</totalSizeCap>
      <cleanHistoryOnStart>true</cleanHistoryOnStart>
      </rollingPolicy>
      <encoder>
      <Pattern>%date %level %msg%n%n</Pattern>
      <charset>UTF-8</charset>
      </encoder>
      </appender>

      <springProfile name=\”standalone\”>
      <logger name=\”org.springframework\”>
      <appender-ref ref=\”CONSOLE\”/>
      <level value=\”INFO\”/>
      </logger>

      <logger name=\”org.apache.catalina.startup.DigesterFactory\”>
      <appender-ref ref=\”CONSOLE\”/>
      <level value=\”INFO\”/>
      </logger>

      <logger name=\”org.apache.catalina.util.LifecycleBase\”>
      <appender-ref ref=\”CONSOLE\”/>
      <level value=\”ERROR\”/>
      </logger>

      <logger name=\”org.apache.coyote.http11.Http11NioProtocol\”>
      <appender-ref ref=\”CONSOLE\”/>
      <level value=\”WARN\”/>
      </logger>

      <logger name=\”org.apache.tomcat.util.net.NioSelectorPool\”>
      <appender-ref ref=\”CONSOLE\”/>
      <level value=\”WARN\”/>
      </logger>
      </springProfile>

      <logger name=\”com.alibaba.nacos.core.listener.StartingApplicationListener\”>
      <appender-ref ref=\”CONSOLE\”/>
      <level value=\”INFO\”/>
      </logger>

      <root>
      <level value=\”INFO\”/>
      <appender-ref ref=\”rootFile\”/>
      </root>
      </configuration>

      2.2 custom.properties

      在 init.d 目录下创建 custom.properties 文件,该文件配置了 MySQL 数据库的信息。关于 Docker 中安装 MySQL 8 ,在之前的文章中已经描写。

      server.contextPath=/nacos
      server.servlet.contextPath=/nacos
      server.port=8848
      spring.datasource.platform=mysql
      db.num=1
      db.url.0=jdbc:mysql://127.0.0.1/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
      db.user=root
      db.password=Mysql.123
      nacos.cmdb.dumpTaskInterval=3600
      nacos.cmdb.eventTaskInterval=10
      nacos.cmdb.labelTaskInterval=300
      nacos.cmdb.loadDataAtStart=false
      management.metrics.export.elastic.enabled=false
      management.metrics.export.influx.enabled=false
      server.tomcat.accesslog.enabled=true
      server.tomcat.accesslog.pattern=%h %l %u %t \”%r\” %s %b %D %{User-Agent}i
      nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
      nacos.naming.distro.taskDispatchThreadCount=1
      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.naming.expireInstance=true

      注意修改上面配置文件中 db 相关的参数,如 url 地址、user 用户名、password 密码等。

      3 准备数据库

      3.1 创建数据库

      create database `nacos`
      default character set utf8mb4 collate utf8mb4_general_ci;

      3.2 创建表结构

      可以去 Nacos 的 github 官方下载:

      https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql

      如果网络不行,可以复制下面的 SQL 语句执行:

      CREATE TABLE `config_info` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \’id\’,
      `data_id` varchar(255) NOT NULL COMMENT \’data_id\’,
      `group_id` varchar(255) DEFAULT NULL,
      `content` longtext NOT NULL COMMENT \’content\’,
      `md5` varchar(32) DEFAULT NULL COMMENT \’md5\’,
      `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’创建时间\’,
      `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’修改时间\’,
      `src_user` text COMMENT \’source user\’,
      `src_ip` varchar(50) DEFAULT NULL COMMENT \’source ip\’,
      `app_name` varchar(128) DEFAULT NULL,
      `tenant_id` varchar(128) DEFAULT \’\’ COMMENT \’租户字段\’,
      `c_desc` varchar(256) DEFAULT NULL,
      `c_use` varchar(64) DEFAULT NULL,
      `effect` varchar(64) DEFAULT NULL,
      `type` varchar(64) DEFAULT NULL,
      `c_schema` text,
      `encrypted_data_key` text NOT NULL COMMENT \’秘钥\’,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=\’config_info\’;

      /******************************************/
      /* 数据库全名 = nacos_config */
      /* 表名称 = config_info_aggr */
      /******************************************/
      CREATE TABLE `config_info_aggr` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \’id\’,
      `data_id` varchar(255) NOT NULL COMMENT \’data_id\’,
      `group_id` varchar(255) NOT NULL COMMENT \’group_id\’,
      `datum_id` varchar(255) NOT NULL COMMENT \’datum_id\’,
      `content` longtext NOT NULL COMMENT \’内容\’,
      `gmt_modified` datetime NOT NULL COMMENT \’修改时间\’,
      `app_name` varchar(128) DEFAULT NULL,
      `tenant_id` varchar(128) DEFAULT \’\’ COMMENT \’租户字段\’,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=\’增加租户字段\’;

      /******************************************/
      /* 数据库全名 = nacos_config */
      /* 表名称 = config_info_beta */
      /******************************************/
      CREATE TABLE `config_info_beta` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \’id\’,
      `data_id` varchar(255) NOT NULL COMMENT \’data_id\’,
      `group_id` varchar(128) NOT NULL COMMENT \’group_id\’,
      `app_name` varchar(128) DEFAULT NULL COMMENT \’app_name\’,
      `content` longtext NOT NULL COMMENT \’content\’,
      `beta_ips` varchar(1024) DEFAULT NULL COMMENT \’betaIps\’,
      `md5` varchar(32) DEFAULT NULL COMMENT \’md5\’,
      `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’创建时间\’,
      `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’修改时间\’,
      `src_user` text COMMENT \’source user\’,
      `src_ip` varchar(50) DEFAULT NULL COMMENT \’source ip\’,
      `tenant_id` varchar(128) DEFAULT \’\’ COMMENT \’租户字段\’,
      `encrypted_data_key` text NOT NULL COMMENT \’秘钥\’,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=\’config_info_beta\’;

      /******************************************/
      /* 数据库全名 = nacos_config */
      /* 表名称 = config_info_tag */
      /******************************************/
      CREATE TABLE `config_info_tag` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \’id\’,
      `data_id` varchar(255) NOT NULL COMMENT \’data_id\’,
      `group_id` varchar(128) NOT NULL COMMENT \’group_id\’,
      `tenant_id` varchar(128) DEFAULT \’\’ COMMENT \’tenant_id\’,
      `tag_id` varchar(128) NOT NULL COMMENT \’tag_id\’,
      `app_name` varchar(128) DEFAULT NULL COMMENT \’app_name\’,
      `content` longtext NOT NULL COMMENT \’content\’,
      `md5` varchar(32) DEFAULT NULL COMMENT \’md5\’,
      `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’创建时间\’,
      `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’修改时间\’,
      `src_user` text COMMENT \’source user\’,
      `src_ip` varchar(50) DEFAULT NULL COMMENT \’source ip\’,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=\’config_info_tag\’;

      /******************************************/
      /* 数据库全名 = nacos_config */
      /* 表名称 = config_tags_relation */
      /******************************************/
      CREATE TABLE `config_tags_relation` (
      `id` bigint(20) NOT NULL COMMENT \’id\’,
      `tag_name` varchar(128) NOT NULL COMMENT \’tag_name\’,
      `tag_type` varchar(64) DEFAULT NULL COMMENT \’tag_type\’,
      `data_id` varchar(255) NOT NULL COMMENT \’data_id\’,
      `group_id` varchar(128) NOT NULL COMMENT \’group_id\’,
      `tenant_id` varchar(128) DEFAULT \’\’ COMMENT \’tenant_id\’,
      `nid` bigint(20) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`nid`),
      UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
      KEY `idx_tenant_id` (`tenant_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=\’config_tag_relation\’;

      /******************************************/
      /* 数据库全名 = nacos_config */
      /* 表名称 = group_capacity */
      /******************************************/
      CREATE TABLE `group_capacity` (
      `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT \’主键ID\’,
      `group_id` varchar(128) NOT NULL DEFAULT \’\’ COMMENT \’Group ID,空字符表示整个集群\’,
      `quota` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’配额,0表示使用默认值\’,
      `usage` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’使用量\’,
      `max_size` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’单个配置大小上限,单位为字节,0表示使用默认值\’,
      `max_aggr_count` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’聚合子配置最大个数,,0表示使用默认值\’,
      `max_aggr_size` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值\’,
      `max_history_count` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’最大变更历史数量\’,
      `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’创建时间\’,
      `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’修改时间\’,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_group_id` (`group_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=\’集群、各Group容量信息表\’;

      /******************************************/
      /* 数据库全名 = nacos_config */
      /* 表名称 = his_config_info */
      /******************************************/
      CREATE TABLE `his_config_info` (
      `id` bigint(20) unsigned NOT NULL,
      `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `data_id` varchar(255) NOT NULL,
      `group_id` varchar(128) NOT NULL,
      `app_name` varchar(128) DEFAULT NULL COMMENT \’app_name\’,
      `content` longtext NOT NULL,
      `md5` varchar(32) DEFAULT NULL,
      `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `src_user` text,
      `src_ip` varchar(50) DEFAULT NULL,
      `op_type` char(10) DEFAULT NULL,
      `tenant_id` varchar(128) DEFAULT \’\’ COMMENT \’租户字段\’,
      `encrypted_data_key` text NOT NULL COMMENT \’秘钥\’,
      PRIMARY KEY (`nid`),
      KEY `idx_gmt_create` (`gmt_create`),
      KEY `idx_gmt_modified` (`gmt_modified`),
      KEY `idx_did` (`data_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=\’多租户改造\’;

      /******************************************/
      /* 数据库全名 = nacos_config */
      /* 表名称 = tenant_capacity */
      /******************************************/
      CREATE TABLE `tenant_capacity` (
      `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT \’主键ID\’,
      `tenant_id` varchar(128) NOT NULL DEFAULT \’\’ COMMENT \’Tenant ID\’,
      `quota` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’配额,0表示使用默认值\’,
      `usage` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’使用量\’,
      `max_size` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’单个配置大小上限,单位为字节,0表示使用默认值\’,
      `max_aggr_count` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’聚合子配置最大个数\’,
      `max_aggr_size` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值\’,
      `max_history_count` int(10) unsigned NOT NULL DEFAULT \’0\’ COMMENT \’最大变更历史数量\’,
      `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’创建时间\’,
      `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \’修改时间\’,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_tenant_id` (`tenant_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=\’租户容量信息表\’;

      CREATE TABLE `tenant_info` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \’id\’,
      `kp` varchar(128) NOT NULL COMMENT \’kp\’,
      `tenant_id` varchar(128) default \’\’ COMMENT \’tenant_id\’,
      `tenant_name` varchar(128) default \’\’ COMMENT \’tenant_name\’,
      `tenant_desc` varchar(256) DEFAULT NULL COMMENT \’tenant_desc\’,
      `create_source` varchar(32) DEFAULT NULL COMMENT \’create_source\’,
      `gmt_create` bigint(20) NOT NULL COMMENT \’创建时间\’,
      `gmt_modified` bigint(20) NOT NULL COMMENT \’修改时间\’,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
      KEY `idx_tenant_id` (`tenant_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=\’tenant_info\’;

      CREATE TABLE `users` (
      `username` varchar(50) NOT NULL PRIMARY KEY,
      `password` varchar(500) NOT NULL,
      `enabled` boolean NOT NULL
      );

      CREATE TABLE `roles` (
      `username` varchar(50) NOT NULL,
      `role` varchar(50) NOT NULL,
      UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
      );

      CREATE TABLE `permissions` (
      `role` varchar(50) NOT NULL,
      `resource` varchar(255) NOT NULL,
      `action` varchar(8) NOT NULL,
      UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
      );

      INSERT INTO users (username, password, enabled) VALUES (\’nacos\’, \’$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu\’, TRUE);

      INSERT INTO roles (username, role) VALUES (\’nacos\’, \’ROLE_ADMIN\’);

      4 启动容器

      执行下列命令:

      docker run -d -p 8848:8848 \\
      -e MODE=standalone \\
      -v /Users/yygnb/dockerMe/nacos/conf:/home/nacos/conf \\
      -v /Users/yygnb/dockerMe/nacos/logs:/home/nacos/logs \\
      -v /Users/yygnb/dockerMe/nacos/data:/home/nacos/data \\
      -v /Users/yygnb/dockerMe/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \\
      –name nacos \\
      nacos/nacos-server:latest

      查看容器运行状态:

      docker ps | grep nacos

      Docker 环境 Nacos2 MySQL8的详细操作

      查看 Nacos 运行的日志:

      docker logs -f nacos

      Docker 环境 Nacos2 MySQL8的详细操作

      5 访问 Nacos

      在浏览器中访问 Nacos:

      http://localhost:8848/

      默认用户名和密码都是 nacos。

      Docker 环境 Nacos2 MySQL8的详细操作

      到此这篇关于Docker环境Nacos2MySQL8的文章就介绍到这了,更多相关Docker环境Nacos2内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

      收藏 (0) 打赏

      感谢您的支持,我会继续努力的!

      打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
      点赞 (0)

      悠久资源 Linux服务器 Docker 环境 Nacos2 MySQL8的详细操作 https://www.u-9.cn/server/linux/2002.html

      常见问题

      相关文章

      发表评论
      暂无评论
      官方客服团队

      为您解决烦忧 - 24小时在线 专业服务