当前位置: 首页 > 图灵资讯 > 技术篇> Docker 安装 nacos

Docker 安装 nacos

来源:图灵教育
时间:2023-06-18 09:21:04

Docker 安装 nacos_修改时间

1. 初始化数据库表
  1. 创建一个名为nacos的数据库
  2. 运行 nacos-mysql.sql文件建表

nacos-mysql.sql

/** Copyright 1999-2018 Alibaba Group Holding Ltd.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/*********************************************   数据库全名 = nacos_config   *//*   表名称 = config_info   */***************************************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,  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 ‘租户字段’,  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(64) 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 ‘租户字段’,  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$EuWPZHz32dJN7jexm34moeyirDFAZm2kuwj7VEOJhzkdrxfu', TRUE);INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

2. 安装

社区Nacos2.1.在0的官方版本中,兼容性已经默认关闭 1.X 服务端升级,只要不手动打开,2.x的Nacos不可能出现服务降级的问题,我们将逐步将所有共同集群升级到2.1.0版本。docker pull nacos/nacos-server:v2.0.4docker pull nacos/nacos-server:v2.1.0

#新logs目录mkdiririr -p /mydata/nacos/logs/                      mkdir -p /mydata/nacos/conf/

vim /mydata/nacos/conf/application.properties

当配置MySQL容器时,需要在docker中填写IP地址

# springserver.contextPath=/nacosserver.servlet.contextPath=/nacosserver.port=848spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://120.48.74.101:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user=rootdb.password=wuatang123# nacos.cmdb.dumpTaskInterval=3600# nacos.cmdb.eventTaskInterval=10# nacos.cmdb.labelTaskInterval=300# nacos.cmdb.loadDataAtStart=false# metrics for prometheus#management.endpoints.web.exposure.include=*# metrics for elastic searchmanagement.metrics.export.elastic.enabled=false#management.metrics.export.elastic.host=http://localhost:9200# metrics for influxmanagement.metrics.export.influx.enabled=false#management.metrics.export.influx.db=springboot#management.metrics.export.influx.uri=http://localhost:8086#management.metrics.export.influx.auto-create-db=true#management.metrics.export.influx.consistency=one#management.metrics.export.influx.compressed=trueserver.tomcat.accesslog.enabled=trueserver.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i# default current work dirserver.tomcat.basedir=## spring security config### turn off security#spring.security.enabled=false#management.security=false#security.basic.enabled=false#nacos.security.ignore.urls=/**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.taskDispatchPeriod=200# nacos.naming.distro.batchSyncKeyCount=1000# nacos.naming.distro.syncRetryDelay=5000# nacos.naming.data.warmup=true# nacos.naming.expireInstance=truenacos.istio.mcp.server.enabled=false

3. 运行容器

docker network create --subnet=120.48.74.101/16 nacos

当配置MySQL容器时,需要在docker中填写IP地址

docker  run \--name nacos -d \-p 8848:8848 \-p 9848:9848 \-p 9849:9849 \--privileged=true \--restart=always \-e JVM_XMS=256m \-e JVM_XMX=256m \-e MODE=standalone \-e PREFER_HOST_MODE=hostname \-v /mydata/nacos/logs:/home/nacos/logs \-v /mydata/nacos/conf/application.properties:/home/nacos/conf/application.properties \nacos/nacos-server:v2.0.4//不修改配置文件可直接指定数据库:当配置MySQL容器时,docker中的IP地址需要填写-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=172.17.0.3 \-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_DB_NAME=nacos \-e MYSQL_SERVICE_USER=root \-e MYSQL_SERVICE_PASSWORD=wuatang123 \-e MYSQL_DATABASE_NUM=1 \

Nacos从 1.4.0 从版本开始,除了主端口 8848 此外,还需要额外的外部暴露 7848 该端口是raft集群协议的通信端口,用于集群节点选举、检测等。

docker run -d \--name nacos01 \-p 7848:7848 \-p 8848:8848 \-p 9848:9848 \-p 9849:9849 \--privileged=true \--restart=always \-e MODE=cluster \-e PREFER_HOST_MODE=ip \-e NACOS_SERVERS="120.48.74.102:8848 39.106.45.30:8848 39.105.52.64:8848" \-e JVM_XMS=256m \-e JVM_XMX=512m \-e JVM_XMN=256m \-v /mydata/nacos/logs:/home/nacos/logs \-v /mydata/nacos/conf/application.properties:/home/nacos/conf/application.properties \nacos/nacos-server:v2.如果不修改配置文件,可以直接指定数据库-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=172.17.0.3 \-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_DB_NAME=nacos \-e MYSQL_SERVICE_USER=root \-e MYSQL_SERVICE_PASSWORD=wuatang123 \-e MYSQL_DATABASE_NUM=1 \

4. 参数说明:

属性名称

描述

选项

MODE

系统启动模式: 集群/单机

cluster/standalone 默认 cluster

NACOS_SERVERS

集群地址

p1:port1空格ip2:port2 空格ip3:port3

PREFER_HOST_MODE

支持IP还是域名模型

hostname/ip 默认IP

NACOS_SERVER_PORT

Nacos 运行端口

默认8848

NACOS_SERVER_IP

在多网卡模式下,可以指定IP

SPRING_DATASOURCE_PLATFORM

MYSQL数据库在单机模式下支持

mysql / 空 默认:空

MYSQL_SERVICE_HOST

数据库 连接地址

MYSQL_SERVICE_PORT

数据库端口

默认 : 3306

MYSQL_SERVICE_DB_NAME

数据库库名

MYSQL_SERVICE_USER

数据库用户名

MYSQL_SERVICE_PASSWORD

用户密码的数据库

MYSQL_SERVICE_DB_PARAM

数据库连接参数

默认:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false

MYSQL_DATABASE_NUM

数据库个数

默认:1

JVM_XMS

-Xms

默认 :1g

JVM_XMX

-Xmx

默认 :1g

JVM_XMN

-Xmn

512m

JVM_MS

- XX:MetaspaceSize

默认 :128m

JVM_MMS

-XX:MaxMetaspaceSize

默认 :320m

NACOS_DEBUG

是否打开远程DEBUGG

y/n 默认 :n

TOMCAT_ACCESSLOG_ENABLED

server.tomcat.accesslog.enabled

默认 :false

NACOS_AUTH_SYSTEM_TYPE

目前只支持nacos类型选择权限系统类型

默认 :nacos

NACOS_AUTH_ENABLE

是否打开权限系统

默认 :false

NACOS_AUTH_TOKEN_EXPIRE_SECONDS

token 失效时间

默认 :18000

NACOS_AUTH_TOKEN

token

默认 :Secretkey01234567890123456789012345678901234567890123467890124679

NACOS_AUTH_CACHE_ENABLE

缓存开关的权限 ,默认情况下,打开后权限缓存的更新有15秒的延迟

默认 : false

MEMBER_LIST

集群地址通过环境变量设置

192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809

EMBEDDED_STORAGE

集群嵌入式存储模式是否开启?

embedded 默认 : none

NACOS_AUTH_CACHE_ENABLE

nacos.core.auth.caching.enabled

default : false

NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE

nacos.core.auth.enable.userAgentAuthWhite

default : false

NACOS_AUTH_IDENTITY_KEY

nacos.core.auth.server.identity.key

default : serverIdentity

NACOS_AUTH_IDENTITY_VALUE

nacos.core.auth.server.identity.value

default : security

NACOS_SECURITY_IGNORE_URLS

nacos.security.ignore.urls

default : /,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**