目前,nacos 最新版本为 2.2.0,GitHub 地址为:
https://github.com/alibaba/nacos/releases
所以本篇文章使用的 nacos 为最新本 2.2.0
1、拉取镜像
docker pull nacos/nacos-server
2、创建数据库
因为我们使用 MySQL 来存放 nacos 的配置文件信息,这样便于后期维护管理,所以我们需要使用 MySQL 创建 一个数据库名为 nacos 的数据库
CREATE DATABASE IF NOT EXISTS `nacos` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
并导入数据库脚本文件
/*
* 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 *//******************************************/CREATETABLE`config_info`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)DEFAULTNULL,`content`longtextNOTNULLCOMMENT'content',`md5`varchar(32)DEFAULTNULLCOMMENT'md5',`gmt_create`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'修改时间',`src_user`textCOMMENT'source user',`src_ip`varchar(50)DEFAULTNULLCOMMENT'source ip',`app_name`varchar(128)DEFAULTNULL,`tenant_id`varchar(128)DEFAULT''COMMENT'租户字段',`c_desc`varchar(256)DEFAULTNULL,`c_use`varchar(64)DEFAULTNULL,`effect`varchar(64)DEFAULTNULL,`type`varchar(64)DEFAULTNULL,`c_schema`text,`encrypted_data_key`textNOTNULLCOMMENT'秘钥',PRIMARYKEY(`id`),UNIQUEKEY`uk_configinfo_datagrouptenant`(`data_id`,`group_id`,`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_info_aggr *//******************************************/CREATETABLE`config_info_aggr`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)NOTNULLCOMMENT'group_id',`datum_id`varchar(255)NOTNULLCOMMENT'datum_id',`content`longtextNOTNULLCOMMENT'内容',`gmt_modified`datetimeNOTNULLCOMMENT'修改时间',`app_name`varchar(128)DEFAULTNULL,`tenant_id`varchar(128)DEFAULT''COMMENT'租户字段',PRIMARYKEY(`id`),UNIQUEKEY`uk_configinfoaggr_datagrouptenantdatum`(`data_id`,`group_id`,`tenant_id`,`datum_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_info_beta *//******************************************/CREATETABLE`config_info_beta`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)NOTNULLCOMMENT'group_id',`app_name`varchar(128)DEFAULTNULLCOMMENT'app_name',`content`longtextNOTNULLCOMMENT'content',`beta_ips`varchar(1024)DEFAULTNULLCOMMENT'betaIps',`md5`varchar(32)DEFAULTNULLCOMMENT'md5',`gmt_create`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'修改时间',`src_user`textCOMMENT'source user',`src_ip`varchar(50)DEFAULTNULLCOMMENT'source ip',`tenant_id`varchar(128)DEFAULT''COMMENT'租户字段',`encrypted_data_key`textNOTNULLCOMMENT'秘钥',PRIMARYKEY(`id`),UNIQUEKEY`uk_configinfobeta_datagrouptenant`(`data_id`,`group_id`,`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_info_tag *//******************************************/CREATETABLE`config_info_tag`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)NOTNULLCOMMENT'group_id',`tenant_id`varchar(128)DEFAULT''COMMENT'tenant_id',`tag_id`varchar(128)NOTNULLCOMMENT'tag_id',`app_name`varchar(128)DEFAULTNULLCOMMENT'app_name',`content`longtextNOTNULLCOMMENT'content',`md5`varchar(32)DEFAULTNULLCOMMENT'md5',`gmt_create`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'修改时间',`src_user`textCOMMENT'source user',`src_ip`varchar(50)DEFAULTNULLCOMMENT'source ip',PRIMARYKEY(`id`),UNIQUEKEY`uk_configinfotag_datagrouptenanttag`(`data_id`,`group_id`,`tenant_id`,`tag_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_tags_relation *//******************************************/CREATETABLE`config_tags_relation`(`id`bigint(20)NOTNULLCOMMENT'id',`tag_name`varchar(128)NOTNULLCOMMENT'tag_name',`tag_type`varchar(64)DEFAULTNULLCOMMENT'tag_type',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)NOTNULLCOMMENT'group_id',`tenant_id`varchar(128)DEFAULT''COMMENT'tenant_id',`nid`bigint(20)NOTNULLAUTO_INCREMENT,PRIMARYKEY(`nid`),UNIQUEKEY`uk_configtagrelation_configidtag`(`id`,`tag_name`,`tag_type`),KEY`idx_tenant_id`(`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = group_capacity *//******************************************/CREATETABLE`group_capacity`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENTCOMMENT'主键ID',`group_id`varchar(128)NOTNULLDEFAULT''COMMENT'Group ID,空字符表示整个集群',`quota`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'配额,0表示使用默认值',`usage`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'使用量',`max_size`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'聚合子配置最大个数,,0表示使用默认值',`max_aggr_size`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'最大变更历史数量',`gmt_create`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'修改时间',PRIMARYKEY(`id`),UNIQUEKEY`uk_group_id`(`group_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = his_config_info *//******************************************/CREATETABLE`his_config_info`(`id`bigint(20)unsignedNOTNULL,`nid`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`data_id`varchar(255)NOTNULL,`group_id`varchar(128)NOTNULL,`app_name`varchar(128)DEFAULTNULLCOMMENT'app_name',`content`longtextNOTNULL,`md5`varchar(32)DEFAULTNULL,`gmt_create`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMP,`gmt_modified`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMP,`src_user`text,`src_ip`varchar(50)DEFAULTNULL,`op_type`char(10)DEFAULTNULL,`tenant_id`varchar(128)DEFAULT''COMMENT'租户字段',`encrypted_data_key`textNOTNULLCOMMENT'秘钥',PRIMARYKEY(`nid`),KEY`idx_gmt_create`(`gmt_create`),KEY`idx_gmt_modified`(`gmt_modified`),KEY`idx_did`(`data_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = tenant_capacity *//******************************************/CREATETABLE`tenant_capacity`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENTCOMMENT'主键ID',`tenant_id`varchar(128)NOTNULLDEFAULT''COMMENT'Tenant ID',`quota`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'配额,0表示使用默认值',`usage`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'使用量',`max_size`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'聚合子配置最大个数',`max_aggr_size`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'最大变更历史数量',`gmt_create`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'修改时间',PRIMARYKEY(`id`),UNIQUEKEY`uk_tenant_id`(`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';CREATETABLE`tenant_info`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`kp`varchar(128)NOTNULLCOMMENT'kp',`tenant_id`varchar(128)default''COMMENT'tenant_id',`tenant_name`varchar(128)default''COMMENT'tenant_name',`tenant_desc`varchar(256)DEFAULTNULLCOMMENT'tenant_desc',`create_source`varchar(32)DEFAULTNULLCOMMENT'create_source',`gmt_create`bigint(20)NOTNULLCOMMENT'创建时间',`gmt_modified`bigint(20)NOTNULLCOMMENT'修改时间',PRIMARYKEY(`id`),UNIQUEKEY`uk_tenant_info_kptenantid`(`kp`,`tenant_id`),KEY`idx_tenant_id`(`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';CREATETABLE`users`(`username`varchar(50)NOTNULLPRIMARYKEY,`password`varchar(500)NOTNULL,`enabled`booleanNOTNULL);CREATETABLE`roles`(`username`varchar(50)NOTNULL,`role`varchar(50)NOTNULL,UNIQUEINDEX`idx_user_role`(`username`ASC,`role`ASC)USINGBTREE);CREATETABLE`permissions`(`role`varchar(50)NOTNULL,`resource`varchar(255)NOTNULL,`action`varchar(8)NOTNULL,UNIQUEINDEX`uk_role_permission`(`role`,`resource`,`action`)USINGBTREE);INSERTINTO users (username, password, enabled)VALUES('nacos','$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu',TRUE);INSERTINTO roles (username, role)VALUES('nacos','ROLE_ADMIN');
3、创建挂载
mkdir-p /home/nacos/logs
mkdir-p /home/nacos/init.d
touch /home/nacos/init.d/custom.properties
4、创建容器
docker run -d--name nacos \--restart=always \--network=host \-eMODE=standalone \-eJVM_XMS=256m \-eJVM_XMX=256m \-eSPRING_DATASOURCE_PLATFORM=mysql \-eMYSQL_SERVICE_HOST=127.0.0.1 \-eMYSQL_SERVICE_PORT=3306\-eMYSQL_SERVICE_DB_NAME=nacos \-eMYSQL_SERVICE_USER=root \-eMYSQL_SERVICE_PASSWORD=123456\-eMYSQL_DATABASE_NUM=1\-v /home/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \-v /home/nacos/logs:/home/nacos/logs \
nacos/nacos-server
- MODE=standalone,单机模式运行
- SPRING_DATASOURCE_PLATFORM=mysql,以 MySQL 作为数据源
- MYSQL_SERVICE_HOST,MySQL IP地址
- MYSQL_SERVICE_PORT,MySQL 端口
- MYSQL_SERVICE_DB_NAME,数据库名
- MYSQL_SERVICE_USER,MySQL 用户名
- MYSQL_SERVICE_PASSWORD,MySQL 用户密码
注意:–network=host 指定 Docker 容器的网络模式为 Host 和宿主机在同一个网络,而不是默认的 Bridge 桥接模式,所以不指定端口的映射 -p 8848:8848
如果启动失败,可在宿主机 /home/nacos/logs 查看日志
5、测试访问
http://127.0.0.1:8848/nacos
6、集群部署
环境说明
ip+端口部署127.0.0.1:3306MySQL127.0.0.1:8846nacos1127.0.0.1:8847nacos2127.0.0.1:8848nacos3创建容器 nacos-1
docker run -d\--name nacos-1 \--restart=always \-eMODE=cluster \-eJVM_XMS=256m \-eJVM_XMX=256m \-eSPRING_DATASOURCE_PLATFORM=mysql \-eMYSQL_SERVICE_HOST=127.0.0.1 \-eMYSQL_SERVICE_PORT=3306\-eMYSQL_SERVICE_DB_NAME=nacos \-eMYSQL_SERVICE_USER=root \-eMYSQL_SERVICE_PASSWORD=123456\-eMYSQL_DATABASE_NUM=1\-eNACOS_SERVERS="127.0.0.1:8846 127.0.0.1:8847 127.0.0.1:8848"\-p8846:8848 \
nacos/nacos-server
- 创建 nacos-2
docker run -d\--name nacos-2 \--restart=always \-eMODE=cluster \-eJVM_XMS=256m \-eJVM_XMX=256m \-eSPRING_DATASOURCE_PLATFORM=mysql \-eMYSQL_SERVICE_HOST=127.0.0.1 \-eMYSQL_SERVICE_PORT=3306\-eMYSQL_SERVICE_DB_NAME=nacos \-eMYSQL_SERVICE_USER=root \-eMYSQL_SERVICE_PASSWORD=123456\-eMYSQL_DATABASE_NUM=1\-eNACOS_SERVERS="127.0.0.1:8846 127.0.0.1:8847 127.0.0.1:8848"\-p8847:8848 \
nacos/nacos-server
- 创建 nacos-3
docker run -d\--name nacos-3 \--restart=always \-eMODE=cluster \-eJVM_XMS=256m \-eJVM_XMX=256m \-eSPRING_DATASOURCE_PLATFORM=mysql \-eMYSQL_SERVICE_HOST=127.0.0.1 \-eMYSQL_SERVICE_PORT=3306\-eMYSQL_SERVICE_DB_NAME=nacos \-eMYSQL_SERVICE_USER=root \-eMYSQL_SERVICE_PASSWORD=123456\-eMYSQL_DATABASE_NUM=1\-eNACOS_SERVERS="127.0.0.1:8846 127.0.0.1:8847 127.0.0.1:8848"\-p8848:8848 \
nacos/nacos-server
- –name,容器名称
- -p 8848:8848,容器端口
- -e MODE=cluster,以集群的方式启动
只需要更改这几处地方即可
如您在阅读中发现不足,欢迎留言!!!
版权归原作者 Asurplus 所有, 如有侵权,请联系我们删除。