Docker 环境 Nacos2 MySQL8

打印 上一主题 下一主题

主题 936|帖子 936|积分 2808

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

1.1 创建目录

在硬盘上创建 nacos 的有关目录:
  1. mkdir -p /Users/yygnb/dockerMe/nacos/conf /Users/yygnb/dockerMe/nacos/logs /Users/yygnb/dockerMe/nacos/data /Users/yygnb/dockerMe/nacos/init.d
复制代码
为该目录添加权限:
  1. chown 200 -R /Users/yygnb/dockerMe/nacos
复制代码
1.2 拉取镜像

搜索镜像:
  1. docker search nacos
复制代码
搜索结果:
2 配置文件

2.1 nacos-logback.xml

在 conf 目录中创建配置文件 nacos-logback.xml:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration scan="true" scanPeriod="10 seconds">
  3.     <springProperty scope="context" name="logPath" source="nacos.logs.path" defaultValue="${nacos.home}/logs"/>
  4.     <property name="LOG_HOME" value="${logPath}"/>
  5.     <appender name="cmdb-main"
  6.               >
  7.         <file>${nacos.home}/logs/cmdb-main.log</file>
  8.         <append>true</append>
  9.         <rollingPolicy >
  10.             <fileNamePattern>${nacos.home}/logs/cmdb-main.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
  11.             <maxFileSize>2GB</maxFileSize>
  12.             <maxHistory>7</maxHistory>
  13.             <totalSizeCap>7GB</totalSizeCap>
  14.             <cleanHistoryOnStart>true</cleanHistoryOnStart>
  15.         </rollingPolicy>
  16.         <encoder>
  17.             <Pattern>%date %level %msg%n%n</Pattern>
  18.             <charset>UTF-8</charset>
  19.         </encoder>
  20.     </appender>
  21.     <appender name="rootFile"
  22.               >
  23.         <file>${LOG_HOME}/nacos.log</file>
  24.         <append>true</append>
  25.         <rollingPolicy >
  26.             <fileNamePattern>${LOG_HOME}/nacos.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
  27.             <maxFileSize>50MB</maxFileSize>
  28.             <maxHistory>7</maxHistory>
  29.             <totalSizeCap>512MB</totalSizeCap>
  30.             <cleanHistoryOnStart>true</cleanHistoryOnStart>
  31.         </rollingPolicy>
  32.         <encoder>
  33.             <Pattern>%date %level %msg%n%n</Pattern>
  34.             <charset>UTF-8</charset>
  35.         </encoder>
  36.     </appender>
  37.     <appender name="CONSOLE" >
  38.         <encoder>
  39.             <Pattern>%date %level %msg%n%n</Pattern>
  40.             <charset>UTF-8</charset>
  41.         </encoder>
  42.     </appender>
  43.     <appender name="naming-server"
  44.               >
  45.         <file>${LOG_HOME}/naming-server.log</file>
  46.         <append>true</append>
  47.         <rollingPolicy >
  48.             <fileNamePattern>${LOG_HOME}/naming-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
  49.             <maxFileSize>1GB</maxFileSize>
  50.             <maxHistory>7</maxHistory>
  51.             <totalSizeCap>7GB</totalSizeCap>
  52.             <cleanHistoryOnStart>true</cleanHistoryOnStart>
  53.         </rollingPolicy>
  54.         <encoder>
  55.             <Pattern>%date %level %msg%n%n</Pattern>
  56.             <charset>UTF-8</charset>
  57.         </encoder>
  58.     </appender>
  59.     <springProfile name="standalone">
  60.         <logger name="org.springframework">
  61.             <appender-ref ref="CONSOLE"/>
  62.             <level value="INFO"/>
  63.         </logger>
  64.         <logger name="org.apache.catalina.startup.DigesterFactory">
  65.             <appender-ref ref="CONSOLE"/>
  66.             <level value="INFO"/>
  67.         </logger>
  68.         <logger name="org.apache.catalina.util.LifecycleBase">
  69.             <appender-ref ref="CONSOLE"/>
  70.             <level value="ERROR"/>
  71.         </logger>
  72.         <logger name="org.apache.coyote.http11.Http11NioProtocol">
  73.             <appender-ref ref="CONSOLE"/>
  74.             <level value="WARN"/>
  75.         </logger>
  76.         <logger name="org.apache.tomcat.util.net.NioSelectorPool">
  77.             <appender-ref ref="CONSOLE"/>
  78.             <level value="WARN"/>
  79.         </logger>
  80.     </springProfile>
  81.     <logger name="com.alibaba.nacos.core.listener.StartingApplicationListener">
  82.         <appender-ref ref="CONSOLE"/>
  83.         <level value="INFO"/>
  84.     </logger>
  85.     <root>
  86.         <level value="INFO"/>
  87.         <appender-ref ref="rootFile"/>
  88.     </root>
  89. </configuration>
复制代码
2.2 custom.properties

在 init.d 目录下创建 custom.properties 文件,该文件配置了 MySQL 数据库的信息。关于 Docker 中安装 MySQL 8 ,在之前的文章中已经描写。
  1. server.contextPath=/nacos
  2. server.servlet.contextPath=/nacos
  3. server.port=8848
  4. spring.datasource.platform=mysql
  5. db.num=1
  6. db.url.0=jdbc:mysql://127.0.0.1/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
  7. db.user=root
  8. db.password=Mysql.123
  9. nacos.cmdb.dumpTaskInterval=3600
  10. nacos.cmdb.eventTaskInterval=10
  11. nacos.cmdb.labelTaskInterval=300
  12. nacos.cmdb.loadDataAtStart=false
  13. management.metrics.export.elastic.enabled=false
  14. management.metrics.export.influx.enabled=false
  15. server.tomcat.accesslog.enabled=true
  16. server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
  17. 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/**
  18. nacos.naming.distro.taskDispatchThreadCount=1
  19. nacos.naming.distro.taskDispatchPeriod=200
  20. nacos.naming.distro.batchSyncKeyCount=1000
  21. nacos.naming.distro.initDataRatio=0.9
  22. nacos.naming.distro.syncRetryDelay=5000
  23. nacos.naming.data.warmup=true
  24. nacos.naming.expireInstance=true
复制代码
注意修改上面配置文件中 db 相关的参数,如 url 地址、user 用户名、password 密码等。
3 准备数据库

3.1 创建数据库
  1. create database `nacos`
  2.     default character set utf8mb4 collate utf8mb4_general_ci;
复制代码
3.2 创建表结构

可以去 Nacos 的 github 官方下载:
  1. https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql
复制代码
如果网络不行,可以复制下面的 SQL 语句执行:
  1. CREATE TABLE `config_info` (
  2.   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  3.   `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  4.   `group_id` varchar(255) DEFAULT NULL,
  5.   `content` longtext NOT NULL COMMENT 'content',
  6.   `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  7.   `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  8.   `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  9.   `src_user` text COMMENT 'source user',
  10.   `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  11.   `app_name` varchar(128) DEFAULT NULL,
  12.   `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  13.   `c_desc` varchar(256) DEFAULT NULL,
  14.   `c_use` varchar(64) DEFAULT NULL,
  15.   `effect` varchar(64) DEFAULT NULL,
  16.   `type` varchar(64) DEFAULT NULL,
  17.   `c_schema` text,
  18.   `encrypted_data_key` text NOT NULL COMMENT '秘钥',
  19.   PRIMARY KEY (`id`),
  20.   UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
  21. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
  22. /******************************************/
  23. /*   数据库全名 = nacos_config   */
  24. /*   表名称 = config_info_aggr   */
  25. /******************************************/
  26. CREATE TABLE `config_info_aggr` (
  27.   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  28.   `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  29.   `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  30.   `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  31.   `content` longtext NOT NULL COMMENT '内容',
  32.   `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  33.   `app_name` varchar(128) DEFAULT NULL,
  34.   `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  35.   PRIMARY KEY (`id`),
  36.   UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
  37. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
  38. /******************************************/
  39. /*   数据库全名 = nacos_config   */
  40. /*   表名称 = config_info_beta   */
  41. /******************************************/
  42. CREATE TABLE `config_info_beta` (
  43.   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  44.   `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  45.   `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  46.   `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  47.   `content` longtext NOT NULL COMMENT 'content',
  48.   `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  49.   `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  50.   `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  51.   `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  52.   `src_user` text COMMENT 'source user',
  53.   `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  54.   `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  55.   `encrypted_data_key` text NOT NULL COMMENT '秘钥',
  56.   PRIMARY KEY (`id`),
  57.   UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
  58. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
  59. /******************************************/
  60. /*   数据库全名 = nacos_config   */
  61. /*   表名称 = config_info_tag   */
  62. /******************************************/
  63. CREATE TABLE `config_info_tag` (
  64.   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  65.   `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  66.   `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  67.   `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  68.   `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  69.   `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  70.   `content` longtext NOT NULL COMMENT 'content',
  71.   `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  72.   `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  73.   `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  74.   `src_user` text COMMENT 'source user',
  75.   `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  76.   PRIMARY KEY (`id`),
  77.   UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
  78. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
  79. /******************************************/
  80. /*   数据库全名 = nacos_config   */
  81. /*   表名称 = config_tags_relation   */
  82. /******************************************/
  83. CREATE TABLE `config_tags_relation` (
  84.   `id` bigint(20) NOT NULL COMMENT 'id',
  85.   `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  86.   `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  87.   `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  88.   `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  89.   `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  90.   `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  91.   PRIMARY KEY (`nid`),
  92.   UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  93.   KEY `idx_tenant_id` (`tenant_id`)
  94. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
  95. /******************************************/
  96. /*   数据库全名 = nacos_config   */
  97. /*   表名称 = group_capacity   */
  98. /******************************************/
  99. CREATE TABLE `group_capacity` (
  100.   `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  101.   `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  102.   `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  103.   `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  104.   `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  105.   `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  106.   `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  107.   `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  108.   `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  109.   `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  110.   PRIMARY KEY (`id`),
  111.   UNIQUE KEY `uk_group_id` (`group_id`)
  112. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
  113. /******************************************/
  114. /*   数据库全名 = nacos_config   */
  115. /*   表名称 = his_config_info   */
  116. /******************************************/
  117. CREATE TABLE `his_config_info` (
  118.   `id` bigint(20) unsigned NOT NULL,
  119.   `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  120.   `data_id` varchar(255) NOT NULL,
  121.   `group_id` varchar(128) NOT NULL,
  122.   `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  123.   `content` longtext NOT NULL,
  124.   `md5` varchar(32) DEFAULT NULL,
  125.   `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  126.   `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  127.   `src_user` text,
  128.   `src_ip` varchar(50) DEFAULT NULL,
  129.   `op_type` char(10) DEFAULT NULL,
  130.   `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  131.   `encrypted_data_key` text NOT NULL COMMENT '秘钥',
  132.   PRIMARY KEY (`nid`),
  133.   KEY `idx_gmt_create` (`gmt_create`),
  134.   KEY `idx_gmt_modified` (`gmt_modified`),
  135.   KEY `idx_did` (`data_id`)
  136. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
  137. /******************************************/
  138. /*   数据库全名 = nacos_config   */
  139. /*   表名称 = tenant_capacity   */
  140. /******************************************/
  141. CREATE TABLE `tenant_capacity` (
  142.   `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  143.   `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  144.   `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  145.   `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  146.   `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  147.   `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  148.   `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  149.   `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  150.   `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  151.   `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  152.   PRIMARY KEY (`id`),
  153.   UNIQUE KEY `uk_tenant_id` (`tenant_id`)
  154. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
  155. CREATE TABLE `tenant_info` (
  156.   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  157.   `kp` varchar(128) NOT NULL COMMENT 'kp',
  158.   `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  159.   `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  160.   `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  161.   `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  162.   `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  163.   `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  164.   PRIMARY KEY (`id`),
  165.   UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  166.   KEY `idx_tenant_id` (`tenant_id`)
  167. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
  168. CREATE TABLE `users` (
  169.         `username` varchar(50) NOT NULL PRIMARY KEY,
  170.         `password` varchar(500) NOT NULL,
  171.         `enabled` boolean NOT NULL
  172. );
  173. CREATE TABLE `roles` (
  174.         `username` varchar(50) NOT NULL,
  175.         `role` varchar(50) NOT NULL,
  176.         UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
  177. );
  178. CREATE TABLE `permissions` (
  179.     `role` varchar(50) NOT NULL,
  180.     `resource` varchar(255) NOT NULL,
  181.     `action` varchar(8) NOT NULL,
  182.     UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
  183. );
  184. INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
  185. INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
复制代码
4 启动容器

执行下列命令:
  1. docker run -d -p 8848:8848 \
  2.                           -e MODE=standalone \
  3.                           -v /Users/yygnb/dockerMe/nacos/conf:/home/nacos/conf \
  4.                           -v /Users/yygnb/dockerMe/nacos/logs:/home/nacos/logs \
  5.                           -v /Users/yygnb/dockerMe/nacos/data:/home/nacos/data \
  6.                           -v /Users/yygnb/dockerMe/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
  7.                           --name nacos \
  8.                           nacos/nacos-server:latest
复制代码
查看容器运行状态:
  1. docker ps | grep nacos
复制代码

查看 Nacos 运行的日志:
  1. docker logs -f nacos
复制代码
5 访问 Nacos

在浏览器中访问 Nacos:
  1. http://localhost:8848/
复制代码
默认用户名和密码都是 nacos。

感谢你阅读本文,如果本文给了你一点点帮助或者启发,还请三连支持一下,点赞、关注、收藏,作者会持续与大家分享更多干货

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表