当前位置:   article > 正文

在docker中安装Nacos--详细教程_docker安装nacos

docker安装nacos

前言

本文主要是记录一下自己在docker中安装nacos从踩坑到实现的一个过程,可谓是很艰辛,记录下来方便自己日后查看的同时也希望能帮助更多的人避坑。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Nacos是什么?

这个问题的话我不介绍了,不懂的朋友可以直接去查一下,概念的东西我这里不谈了,只讲步骤。

二、使用步骤

1.安装docker

代码如下(示例):

  1. 安装docker
  2. yum -y install docker
  3. 设置开机自启
  4. systemctl enable docker
  5. 启动docker
  6. systemctl start docker
  7. 查看docker当前的版本
  8. docker version
  9. 做到这里呢基本上你的docker就安装了一大部分了,当然也有那些无法安装的人,那我建议你可以查看
  10. 一下你的虚拟机是不是装的有问题,能不能ping通网络,如果虚拟机ping不同网络的话那你是没有办法
  11. 安装的,至于如何安装虚拟机,这个可以自行在网上搜索,有详细教程。
  12. 接下来就是docker的一些配置,目的是让你的下载速度变快。
  13. 首先切换到docker的配置目录里面
  14. cd /etc/docker/
  15. 查看当前目录下是否有daemon.json的文件
  16. 修改daemon.json文件:
  17. vi daemon.json
  18. 将路径填写近文件
  19. “registry-mirrors”:["https://32xw0apq.mirror.aliyuncs.com"]
  20. 然后保存该文件,重启docker
  21. systemctl restart docker
  22. 这样docker就安装完毕了!

2.安装mysql

代码如下(示例):

  1. 可以自己选择安装的数据库版本
  2. docker pull mysql:8.0.27
  3. 下载完成后创建在/home/mysql/下新建两个对应文件夹,可以代码实现,也可以通过图形化工具手动创建
  4. mkdir -p /home/mysql/{date,conf}
  5. 创建完成后在conf文件中新建my.conf文件进行配置:

  1. [mysqld]
  2. #Mysql服务的唯一编号 每个mysql服务Id需唯一
  3. server-id=1
  4. #服务端口号 默认3306
  5. port=3306
  6. #mysql安装根目录(default /usr)
  7. #basedir=/usr/local/mysql
  8. #mysql数据文件所在位置
  9. datadir=/var/lib/mysql
  10. #pid
  11. pid-file=/var/run/mysqld/mysqld.pid
  12. #设置socke文件所在目录
  13. socket=/var/lib/mysql/mysql.sock
  14. #设置临时目录
  15. #tmpdir=/tmp
  16. # 用户
  17. user=mysql
  18. # 允许访问的IP网段
  19. bind-address=0.0.0.0
  20. # 跳过密码登录
  21. #skip-grant-tables
  22. #主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
  23. #skip-external-locking
  24. #只能用IP地址检查客户端的登录,不用主机名
  25. #skip_name_resolve=1
  26. #事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
  27. #transaction_isolation=READ-COMMITTED
  28. #数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
  29. character-set-server=utf8mb4
  30. #数据库字符集对应一些排序等规则,注意要和character-set-server对应
  31. collation-server=utf8mb4_general_ci
  32. #设置client连接mysql时的字符集,防止乱码
  33. init_connect='SET NAMES utf8mb4'
  34. #是否对sql语句大小写敏感,1表示不敏感
  35. lower_case_table_names=1
  36. #最大连接数
  37. max_connections=400
  38. #最大错误连接数
  39. max_connect_errors=1000
  40. #TIMESTAMP如果没有显示声明NOT NULL,允许NULL
  41. explicit_defaults_for_timestamp=true
  42. #SQL数据包发送的大小,如果有BLOB对象建议修改成1G
  43. max_allowed_packet=128M
  44. #MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
  45. #MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
  46. interactive_timeout=1800
  47. wait_timeout=1800
  48. #内部内存临时表的最大值 ,设置成128M。
  49. #比如大数据量的group by ,order by时可能用到临时表,
  50. #超过了这个值将写入磁盘,系统IO压力增大
  51. tmp_table_size=134217728
  52. max_heap_table_size=134217728
  53. #禁用mysql的缓存查询结果集功能
  54. #后期根据业务情况测试决定是否开启
  55. #大部分情况下关闭下面两项
  56. #query_cache_size = 0
  57. #query_cache_type = 0
  58. #数据库错误日志文件
  59. #log-error=/var/log/mysqld.log
  60. #慢查询sql日志设置
  61. #slow_query_log=1
  62. #slow_query_log_file=/var/log/mysqld_slow.log
  63. #检查未使用到索引的sql
  64. log_queries_not_using_indexes=1
  65. #针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
  66. log_throttle_queries_not_using_indexes=5
  67. #作为从库时生效,从库复制中如何有慢sql也将被记录
  68. log_slow_slave_statements=1
  69. #慢查询执行的秒数,必须达到此值可被记录
  70. long_query_time=8
  71. #检索的行数必须达到此值才可被记为慢查询
  72. min_examined_row_limit=100
  73. #mysql binlog日志文件保存的过期时间,过期后自动删除
  74. #expire_logs_days=5
  75. binlog_expire_logs_seconds=604800

 保存配置文件后启动容器:

docker run -itd -p 3306:3306  --name mysql  -v /home/mysql/conf/my.cnf:/etc/my.cnf  -v /home/mysql/data:/var/lib/mysql --privileged=true --restart=always  -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.27

启动后可查看容器进程:

docker ps

查看容器启动日志:

docker logs mysql

用navicat连接虚拟机的数据库,注意如果是数据库装在本机则用localhost,虚拟机则用虚拟机的ip

如果遇到连接失败的话查看原因,按照这个步骤来基本不会出错;

连接完成后需要进行创建一个nacos数据库,并执行对应的数据库语句:

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

 创建完成后就可以进行下一步了。

3.安装nacos

首先需要拉取对应的镜像文件(不建议用最新版本,可能有意外的问题):

docker pull nacos/nacos-server:v2.1.1

接着挂载目录:

  1. mkdir -p /mydata/nacos/logs/ #新建logs目录
  2. mkdir -p /mydata/nacos/init.d/
  3. vim /mydata/nacos/init.d/custom.properties #修改配置文件

修改custom.properties配置文件

  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://xx.xx.xx.x:3306/nacos? characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true #这里需要修改端口
  7. db.user=root #用户名
  8. db.password=root #密码
  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

启动nacos容器:

  1. docker run \
  2. --name nacos -d \
  3. -p 8848:8848 \
  4. --privileged=true \
  5. --restart=always \
  6. -e JVM_XMS=256m \
  7. -e JVM_XMX=256m \
  8. -e MODE=standalone \
  9. -e PREFER_HOST_MODE=hostname \
  10. -v /mydata/nacos/logs:/home/nacos/logs \
  11. -v /mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
  12. nacos/nacos-server:v2.1.1

此时nacos容器就安装成功了可以打开浏览器进行登录:

https:xx.xx.xx.xx:8848/nacos 账号:nacos 密码:nacos

 最后设置nacos自启动:

docker update --restart=always  nacos

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/886386
推荐阅读
相关标签
  

闽ICP备14008679号