docker安装nacos并配置数据库

约定不等于承诺〃 2023-10-13 10:24 167阅读 0赞

1、下载镜像

  1. docker pull nacos/nacos-server

e28799d4778843569f2ca587b9c8c5bb.png

查看下载镜像

  1. docker images

af2af48a3a03423c9bac0bb927afe139.png

2、启动nacos

注意:如果nacos版本在2.0及以上,需要把8848、9848和9849三个端口映射出来,否则访问会404失败

  • 也可以直接使用步骤3中的启动命令,可以挂载目录和设置启动内存,但是在我的机器上挂载目录,nacos就出错,很难受

    docker run —env MODE=standalone \
    —name nacos -d -p 8848:8848 \
    -p 9848:9848 -p 9849:9849 \
    nacos/nacos-server

查看nacos运行状态

  1. docker ps

c399419b756a4b6d8c288625a7df8117.png

3、挂载nacos

经测试,在我的机器上直接进行挂载,nacos会启动异常,我猜测是挂载了conf文件,导致nacos容器启动时,容器中的/home/nacos/conf文件中没有配置文件,因此,先执行上述步骤2中的nacos容器启动命令,再把容器中的配置文件拷贝到宿主中(挂载目录),这样在挂载时,外部的conf挂载目录存在了nacos的配置信息

3.1>新建nacos挂载目录

只需要新建conf的挂载即可,其他目录的挂载会自动生成目录(如logs)

  1. mkdir /mydata/nacos/conf
3.2>把nacos容器中的/home/nacos/conf文件夹拷贝

上述步骤2中,已经启动了nacos容器,我们把容器中的配置文件拷贝出来即可

  1. docker cp nacos:/home/nacos/conf/ /mydata/nacos/
  • 注意:宿主路径填写/mydata/nacos,后面不需要写conf,会自动覆盖

我们看下、mydata/nacos/conf文件下,nacos完整的配置信息已拷贝过来:

32a17380faa24f238cb7d56f75854b76.png

3.3>删除nacos容器

先停止nacos容器

  1. docker stop nacos

再删除nacos容器

  1. docker remove nacos
3.4>重新run nacos容器(挂载目录的方式)
  1. docker run --name nacos -p 8848:8848 \
  2. -p 9848:9848 -p 9849:9849 \
  3. --privileged=true \
  4. --restart=always \
  5. -e MODE=standalone \
  6. -e PREFER_HOST_MODE=hostname \
  7. -e JVM_XMS=256m \
  8. -e JVM_XMX=1024m \
  9. -v /mydata/nacos/logs:/home/nacos/logs \
  10. -v /mydata/nacos/conf/:/home/nacos/conf \
  11. -d nacos/nacos-server

参数详解(根据自己的需要,选择参数):

-p 8848:8848 # 宿主机端口:容器端口
–name nacos # 容器名字
–privileged=true # 使用该参数,container内的root拥有真正的root权限
–network host # 设置属于该容器的网络
–restart=always # 总是重启
-e PREFER_HOST_MODE=hostname # 是否支持 hostname,可选参数为hostname/ip,默认值是当前宿主机的ip
-e MODE=standalone # 使用 standalone模式(单机模式),MODE值有cluster模式/standalone模式两种
-e JVM_XMS=256m # -Xms 为jvm启动时分配的内存[我设置会导致nacos启动异常,无法访问,故没有设置]
-e JVM_XMX=1024m # -Xmx 为jvm运行过程中分配的最大内存[我设置会导致nacos启动异常,无法访问,故没有设置]
-d nacos/nacos-server # 后台启动模式及使用的镜像
-v /mydata/nacos/logs:/home/nacos/logs \

-v:挂载宿主机的一个目录, 持久化存储的关键所在,将主机目录挂载到容器对应目录,分别是:配置文件、日志文件
–restart=always:容器自动启动参数,其值可以为[no,on-failure,always]
no为默认值,表示容器退出时,docker不自动重启容器
on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃
always表示,只要容器退出,则docker将自动重启容器

4、配置mysql

方式1:进入nacos容器修改配置

  1. docker exec -it nacos bash

4c8b079540cd42a2a9a73d9db8bfff10.png

修改容器配置

  1. vi conf/application.properties

bf4cae6da544458eb208c4e85eb1fb11.png

方式2:修改宿主挂载目录的配置文件即可

  1. vi /mydata/nacos/conf/application.properties

文件内容与方式1一样

5、创建nacos数据库

创建SQL脚本在官方的GitHub上,这里附上gitee地址:

https://gitee.com/mirrors/Nacos/blob/develop/distribution/conf/mysql-schema.sql#

把下面的SQL在mysql(nacos库下)中执行一次就可以了

  1. /*
  2. * Copyright 1999-2018 Alibaba Group Holding Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. /******************************************/
  17. /* 表名称 = config_info */
  18. /******************************************/
  19. CREATE TABLE `config_info` (
  20. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  21. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  22. `group_id` varchar(128) DEFAULT NULL COMMENT 'group_id',
  23. `content` longtext NOT NULL COMMENT 'content',
  24. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  25. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  26. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  27. `src_user` text COMMENT 'source user',
  28. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  29. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  30. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  31. `c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description',
  32. `c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage',
  33. `effect` varchar(64) DEFAULT NULL COMMENT '配置生效的描述',
  34. `type` varchar(64) DEFAULT NULL COMMENT '配置的类型',
  35. `c_schema` text COMMENT '配置的模式',
  36. `encrypted_data_key` text COMMENT '密钥',
  37. PRIMARY KEY (`id`),
  38. UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
  39. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
  40. /******************************************/
  41. /* 表名称 = config_info_aggr */
  42. /******************************************/
  43. CREATE TABLE `config_info_aggr` (
  44. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  45. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  46. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  47. `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  48. `content` longtext NOT NULL COMMENT '内容',
  49. `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  50. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  51. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  52. PRIMARY KEY (`id`),
  53. UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
  54. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
  55. /******************************************/
  56. /* 表名称 = config_info_beta */
  57. /******************************************/
  58. CREATE TABLE `config_info_beta` (
  59. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  60. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  61. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  62. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  63. `content` longtext NOT NULL COMMENT 'content',
  64. `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  65. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  66. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  67. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  68. `src_user` text COMMENT 'source user',
  69. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  70. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  71. `encrypted_data_key` text COMMENT '密钥',
  72. PRIMARY KEY (`id`),
  73. UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
  74. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
  75. /******************************************/
  76. /* 表名称 = config_info_tag */
  77. /******************************************/
  78. CREATE TABLE `config_info_tag` (
  79. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  80. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  81. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  82. `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  83. `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  84. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  85. `content` longtext NOT NULL COMMENT 'content',
  86. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  87. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  88. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  89. `src_user` text COMMENT 'source user',
  90. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  91. PRIMARY KEY (`id`),
  92. UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
  93. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
  94. /******************************************/
  95. /* 表名称 = config_tags_relation */
  96. /******************************************/
  97. CREATE TABLE `config_tags_relation` (
  98. `id` bigint(20) NOT NULL COMMENT 'id',
  99. `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  100. `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  101. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  102. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  103. `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  104. `nid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',
  105. PRIMARY KEY (`nid`),
  106. UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  107. KEY `idx_tenant_id` (`tenant_id`)
  108. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
  109. /******************************************/
  110. /* 表名称 = group_capacity */
  111. /******************************************/
  112. CREATE TABLE `group_capacity` (
  113. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  114. `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  115. `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  116. `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  117. `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  118. `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  119. `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  120. `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  121. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  122. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  123. PRIMARY KEY (`id`),
  124. UNIQUE KEY `uk_group_id` (`group_id`)
  125. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
  126. /******************************************/
  127. /* 表名称 = his_config_info */
  128. /******************************************/
  129. CREATE TABLE `his_config_info` (
  130. `id` bigint(20) unsigned NOT NULL COMMENT 'id',
  131. `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',
  132. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  133. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  134. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  135. `content` longtext NOT NULL COMMENT 'content',
  136. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  137. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  138. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  139. `src_user` text COMMENT 'source user',
  140. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  141. `op_type` char(10) DEFAULT NULL COMMENT 'operation type',
  142. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  143. `encrypted_data_key` text COMMENT '密钥',
  144. PRIMARY KEY (`nid`),
  145. KEY `idx_gmt_create` (`gmt_create`),
  146. KEY `idx_gmt_modified` (`gmt_modified`),
  147. KEY `idx_did` (`data_id`)
  148. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
  149. /******************************************/
  150. /* 表名称 = tenant_capacity */
  151. /******************************************/
  152. CREATE TABLE `tenant_capacity` (
  153. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  154. `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  155. `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  156. `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  157. `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  158. `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  159. `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  160. `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  161. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  162. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  163. PRIMARY KEY (`id`),
  164. UNIQUE KEY `uk_tenant_id` (`tenant_id`)
  165. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
  166. CREATE TABLE `tenant_info` (
  167. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  168. `kp` varchar(128) NOT NULL COMMENT 'kp',
  169. `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  170. `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  171. `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  172. `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  173. `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  174. `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  175. PRIMARY KEY (`id`),
  176. UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  177. KEY `idx_tenant_id` (`tenant_id`)
  178. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
  179. CREATE TABLE `users` (
  180. `username` varchar(50) NOT NULL PRIMARY KEY COMMENT 'username',
  181. `password` varchar(500) NOT NULL COMMENT 'password',
  182. `enabled` boolean NOT NULL COMMENT 'enabled'
  183. );
  184. CREATE TABLE `roles` (
  185. `username` varchar(50) NOT NULL COMMENT 'username',
  186. `role` varchar(50) NOT NULL COMMENT 'role',
  187. UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
  188. );
  189. CREATE TABLE `permissions` (
  190. `role` varchar(50) NOT NULL COMMENT 'role',
  191. `resource` varchar(255) NOT NULL COMMENT 'resource',
  192. `action` varchar(8) NOT NULL COMMENT 'action',
  193. UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
  194. );
  195. INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
  196. INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

6、 重启容器

  1. docker restart nacos

7、访问nacos

http://IP地址:8848/nacos

默认账号:nacos

默认密码:nacos

发表评论

表情:
评论列表 (有 0 条评论,167人围观)

还没有评论,来说两句吧...

相关阅读