0


【Docker】10、Docker安装Nacos服务(单机和集群)

目前,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,以集群的方式启动

只需要更改这几处地方即可

如您在阅读中发现不足,欢迎留言!!!

标签: docker 数据库 nacos

本文转载自: https://blog.csdn.net/qq_40065776/article/details/129163144
版权归原作者 Asurplus 所有, 如有侵权,请联系我们删除。

“【Docker】10、Docker安装Nacos服务(单机和集群)”的评论:

还没有评论