Docker三分钟部署Nacos:带持久化的保姆级教程(避坑指南)_docker nacos
背景:为什么我选择 Docker 安装 Nacos?
我最近在学习Spring Cloud,但又不想在自己的电脑上安装Nacos,一是怕占了太多本地资源,二是感觉在服务器上用Docker来装Nacos会更方便、快捷。这样不仅能让我更熟悉服务器的操作,还能让我对Docker的使用更加熟练。于是,我决定在服务器上用Docker来安装Nacos,以及常用到的的MySql、Redis、Rabbitmq、kafka,没想到整个过程真的非常顺利,还让我对Spring Cloud的开发环境搭建有了新的认识。这个方式不仅能节省时间,还能让我更熟悉服务器部署流程,顺便练习 Docker 技能,一举多得!
前置知识(图解版)
#mermaid-svg-fbCd0qRzsdXiNnU9 {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fbCd0qRzsdXiNnU9 .error-icon{fill:#552222;}#mermaid-svg-fbCd0qRzsdXiNnU9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fbCd0qRzsdXiNnU9 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-fbCd0qRzsdXiNnU9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fbCd0qRzsdXiNnU9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fbCd0qRzsdXiNnU9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fbCd0qRzsdXiNnU9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fbCd0qRzsdXiNnU9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fbCd0qRzsdXiNnU9 .marker.cross{stroke:#333333;}#mermaid-svg-fbCd0qRzsdXiNnU9 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fbCd0qRzsdXiNnU9 .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-fbCd0qRzsdXiNnU9 .cluster-label text{fill:#333;}#mermaid-svg-fbCd0qRzsdXiNnU9 .cluster-label span{color:#333;}#mermaid-svg-fbCd0qRzsdXiNnU9 .label text,#mermaid-svg-fbCd0qRzsdXiNnU9 span{fill:#333;color:#333;}#mermaid-svg-fbCd0qRzsdXiNnU9 .node rect,#mermaid-svg-fbCd0qRzsdXiNnU9 .node circle,#mermaid-svg-fbCd0qRzsdXiNnU9 .node ellipse,#mermaid-svg-fbCd0qRzsdXiNnU9 .node polygon,#mermaid-svg-fbCd0qRzsdXiNnU9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fbCd0qRzsdXiNnU9 .node .label{text-align:center;}#mermaid-svg-fbCd0qRzsdXiNnU9 .node.clickable{cursor:pointer;}#mermaid-svg-fbCd0qRzsdXiNnU9 .arrowheadPath{fill:#333333;}#mermaid-svg-fbCd0qRzsdXiNnU9 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fbCd0qRzsdXiNnU9 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fbCd0qRzsdXiNnU9 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-fbCd0qRzsdXiNnU9 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-fbCd0qRzsdXiNnU9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fbCd0qRzsdXiNnU9 .cluster text{fill:#333;}#mermaid-svg-fbCd0qRzsdXiNnU9 .cluster span{color:#333;}#mermaid-svg-fbCd0qRzsdXiNnU9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fbCd0qRzsdXiNnU9 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}包含连接存储挂载Docker容器Nacos服务MySQL数据库配置数据宿主机目录
一、什么是Docker和Nacos
Docker
Docker是一个容器化平台,允许开发者将应用程序及其依赖打包到轻量级、可移植的容器中。其核心功能包括:
- 容器化技术:利用Linux内核的cgroups和namespaces实现资源隔离,确保应用在不同环境中运行一致性。
- 快速部署与跨平台支持:容器镜像可在任何支持Docker的环境中运行,简化开发、测试到生产的全流程。
- 轻量级与高效性:相比传统虚拟机,容器共享主机操作系统内核,启动更快且资源占用更低。
典型应用场景包括本地开发环境搭建、持续集成/持续部署(CI/CD)及分布式应用部署。
Nacos
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的服务发现与配置管理平台,专为云原生和微服务架构设计。其核心功能包括:
- 服务发现与健康监测:支持基于DNS或RPC的服务注册与发现,并提供实时健康检查,确保服务可用性。
- 动态配置管理:集中化管理应用配置,支持配置版本跟踪、灰度发布和一键回滚,避免因配置变更导致的服务重启。
- 动态DNS与流量管理:通过权重路由实现负载均衡,支持中间层流量控制。
在微服务架构中,Nacos作为基础设施,帮助实现服务间的通信协调、配置动态更新及服务元数据管理,提升系统弹性和可维护性
二、拉取Nacos镜像
-
打开终端(Windows上是命令提示符或PowerShell,Mac和Linux上是Terminal)。
-
输入下面的命令来拉取Nacos的镜像:
docker pull nacos/nacos-server:v2.1.1
这个命令就是从Docker Hub上把Nacos镜像给拉下来,版本号是
v2.1.1
。拉取速度看你的网速,可能要等一会儿。
三、创建目录
为了能让Nacos持久化存储数据,要先在本地创建几个目录放配置文件、日志和数据。在终端里输下面的命令:
mkdir -p /data/nacos/{conf,logs,data}
这条命令是在/data/nacos/
下面创建三个文件夹:conf
(放配置文件)、logs
(放日志文件)和data
(放数据)。mkdir -p
是说如果路径不存在就创建,{conf,logs,data}
是同时建这三个文件夹的快捷方式。
四、创建Nacos容器
-
先用下面的命令创建一个Nacos容器:
docker run -p 8848:8848 --name nacos -d nacos/nacos-server:v2.1.1
这里
-p 8848:8848
是把容器的8848端口映射到你电脑的8848端口,这样以后就能通过localhost:8848
访问Nacos了。--name nacos
是给这个容器起名字,方便后续操作。-d
是让容器在后台运行。 -
把容器里的配置文件、日志文件和数据文件拷贝到刚才创建的目录里:
docker cp nacos:/home/nacos/conf /data/nacosdocker cp nacos:/home/nacos/data /data/nacosdocker cp nacos:/home/nacos/logs /data/nacos
-
接着,给这些目录授权,让Nacos能读写它们:
chmod 777 /data/nacos/{conf,logs,data}
-
最后,把刚才创建的临时容器删掉:
docker rm -f nacos
五、创建Nacos数据持久化数据库
要让Nacos能持久化存配置信息,得先建一个MySQL数据库。要是还没装MySQL,就去MySQL官网看文档安装。
-
登录到MySQL数据库,创建一个叫
nacos
的数据库:CREATE DATABASE nacos;
-
然后,运行下面的SQL语句创建Nacos需要的表结构:
/* Navicat Premium Data Transfer Source Server : 宁波服务器 Source Server Type : MySQL Source Server Version : 50744 Source Host : 114.66.52.217:3306 Source Schema : nacos Target Server Type : MySQL Target Server Version : 50744 File Encoding : 65001 Date: 30/05/2025 08:32:16*/SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for config_info-- ----------------------------DROP TABLE IF EXISTS `config_info`;CREATE TABLE `config_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \'id\', `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'data_id\', `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'content\', `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'md5\', `gmt_create` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'创建时间\', `gmt_modified` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'修改时间\', `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT \'source user\', `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'source ip\', `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT \'\' COMMENT \'租户字段\', `c_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `c_use` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `effect` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `c_schema` text CHARACTER SET utf8 COLLATE utf8_bin NULL, `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT \'秘钥\', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_configinfo_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = \'config_info\' ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of config_info-- ------------------------------ ------------------------------ Table structure for config_info_aggr-- ----------------------------DROP TABLE IF EXISTS `config_info_aggr`;CREATE TABLE `config_info_aggr` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \'id\', `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'data_id\', `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'group_id\', `datum_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'datum_id\', `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'内容\', `gmt_modified` datetime NULL DEFAULT NULL COMMENT \'修改时间\', `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT \'\' COMMENT \'租户字段\', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_configinfoaggr_datagrouptenantdatum`(`data_id`, `group_id`, `tenant_id`, `datum_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = \'增加租户字段\' ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of config_info_aggr-- ------------------------------ ------------------------------ Table structure for config_info_beta-- ----------------------------DROP TABLE IF EXISTS `config_info_beta`;CREATE TABLE `config_info_beta` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \'id\', `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'data_id\', `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'group_id\', `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'app_name\', `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'content\', `beta_ips` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'betaIps\', `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'md5\', `gmt_create` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'创建时间\', `gmt_modified` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'修改时间\', `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT \'source user\', `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'source ip\', `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT \'\' COMMENT \'租户字段\', `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT \'秘钥\', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_configinfobeta_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = \'config_info_beta\' ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of config_info_beta-- ------------------------------ ------------------------------ Table structure for config_info_tag-- ----------------------------DROP TABLE IF EXISTS `config_info_tag`;CREATE TABLE `config_info_tag` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \'id\', `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'data_id\', `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'group_id\', `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT \'\' COMMENT \'tenant_id\', `tag_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'tag_id\', `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'app_name\', `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'content\', `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'md5\', `gmt_create` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'创建时间\', `gmt_modified` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'修改时间\', `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT \'source user\', `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'source ip\', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_configinfotag_datagrouptenanttag`(`data_id`, `group_id`, `tenant_id`, `tag_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = \'config_info_tag\' ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of config_info_tag-- ------------------------------ ------------------------------ Table structure for config_tags_relation-- ----------------------------DROP TABLE IF EXISTS `config_tags_relation`;CREATE TABLE `config_tags_relation` ( `id` bigint(20) NOT NULL COMMENT \'id\', `tag_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'tag_name\', `tag_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'tag_type\', `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'data_id\', `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'group_id\', `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT \'\' COMMENT \'tenant_id\', `nid` bigint(20) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`nid`) USING BTREE, UNIQUE INDEX `uk_configtagrelation_configidtag`(`id`, `tag_name`, `tag_type`) USING BTREE, INDEX `idx_tenant_id`(`tenant_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = \'config_tag_relation\' ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of config_tags_relation-- ------------------------------ ------------------------------ Table structure for group_capacity-- ----------------------------DROP TABLE IF EXISTS `group_capacity`;CREATE TABLE `group_capacity` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT \'主键ID\', `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin 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 NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'创建时间\', `gmt_modified` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'修改时间\', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_group_id`(`group_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = \'集群、各Group容量信息表\' ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of group_capacity-- ------------------------------ ------------------------------ Table structure for his_config_info-- ----------------------------DROP TABLE IF EXISTS `his_config_info`;CREATE TABLE `his_config_info` ( `id` bigint(20) UNSIGNED NOT NULL, `nid` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'app_name\', `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `gmt_create` datetime NULL DEFAULT CURRENT_TIMESTAMP, `gmt_modified` datetime NULL DEFAULT CURRENT_TIMESTAMP, `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL, `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `op_type` char(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT \'\' COMMENT \'租户字段\', `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT \'秘钥\', PRIMARY KEY (`nid`) USING BTREE, INDEX `idx_gmt_create`(`gmt_create`) USING BTREE, INDEX `idx_gmt_modified`(`gmt_modified`) USING BTREE, INDEX `idx_did`(`data_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = \'多租户改造\' ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of his_config_info-- ------------------------------ ------------------------------ Table structure for permissions-- ----------------------------DROP TABLE IF EXISTS `permissions`;CREATE TABLE `permissions` ( `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `resource` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `action` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, UNIQUE INDEX `uk_role_permission`(`role`, `resource`, `action`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of permissions-- ------------------------------ ------------------------------ Table structure for roles-- ----------------------------DROP TABLE IF EXISTS `roles`;CREATE TABLE `roles` ( `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, UNIQUE INDEX `idx_user_role`(`username`, `role`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of roles-- ----------------------------INSERT INTO `roles` VALUES (\'nacos\', \'ROLE_ADMIN\');-- ------------------------------ Table structure for tenant_capacity-- ----------------------------DROP TABLE IF EXISTS `tenant_capacity`;CREATE TABLE `tenant_capacity` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT \'主键ID\', `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin 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 NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'创建时间\', `gmt_modified` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'修改时间\', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_tenant_id`(`tenant_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = \'租户容量信息表\' ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of tenant_capacity-- ------------------------------ ------------------------------ Table structure for tenant_info-- ----------------------------DROP TABLE IF EXISTS `tenant_info`;CREATE TABLE `tenant_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT \'id\', `kp` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'kp\', `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT \'\' COMMENT \'tenant_id\', `tenant_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT \'\' COMMENT \'tenant_name\', `tenant_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'tenant_desc\', `create_source` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'create_source\', `gmt_create` bigint(20) NULL DEFAULT NULL COMMENT \'创建时间\', `gmt_modified` bigint(20) NULL DEFAULT NULL COMMENT \'修改时间\', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_tenant_info_kptenantid`(`kp`, `tenant_id`) USING BTREE, INDEX `idx_tenant_id`(`tenant_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = \'tenant_info\' ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of tenant_info-- ------------------------------ ------------------------------ Table structure for users-- ----------------------------DROP TABLE IF EXISTS `users`;CREATE TABLE `users` ( `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `password` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `enabled` tinyint(1) NOT NULL, PRIMARY KEY (`username`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;-- ------------------------------ Records of users-- ----------------------------INSERT INTO `users` VALUES (\'nacos\', \'$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu\', 1);SET FOREIGN_KEY_CHECKS = 1;
六、启动Nacos容器
现在,有了配置文件、日志文件、数据文件和数据库,可以启动Nacos容器了。在终端里输入下面的命令:
docker run -d \\-e MODE=standalone \\--privileged=true \\-e SPRING_DATASOURCE_PLATFORM=mysql \\-e MYSQL_SERVICE_HOST=你的MySQL服务器IP \\-e MYSQL_SERVICE_PORT=3306 \\-e MYSQL_SERVICE_USER=你的MySQL用户名 \\-e MYSQL_SERVICE_PASSWORD=你的MySQL密码 \\-e MYSQL_SERVICE_DB_NAME=nacos \\-e TIME_ZONE=\'Asia/Shanghai\' \\-e NACOS_AUTH_ENABLE=true \\-v /data/nacos/logs:/home/nacos/logs \\-v /data/nacos/data:/home/nacos/data \\-v /data/nacos/conf:/home/nacos/conf \\-p 8848:8848 -p 9848:9848 -p 9849:9849 \\--name nacos --restart=always nacos/nacos-server:v2.1.1
这个命令有点长,不过它做了好多重要的事:
-
-e
后面是环境变量,用来配置Nacos的各种参数,比如连接MySQL数据库的信息、时区、是否启用认证等。 -
-v
后面是挂载卷,把之前创建的本地目录挂载到容器里,这样Nacos就能用它们存数据了。 -
-p
后面是端口映射,让Nacos的端口能被外部访问。 -
--name nacos
是给这个容器起名字。 -
--restart=always
是说如果容器意外退出,Docker会自动重启它。
七、查看Nacos启动日志
在终端里输入下面的命令来看Nacos的启动日志:
docker logs -f nacos
这个命令会实时显示Nacos容器的日志输出,你可以通过看日志来判断Nacos是不是启动成功了。要是看到“Nacos is starting…”这样的提示,就说明Nacos正在启动;要是看到“Nacos is started…”这样的提示,就说明Nacos已经成功启动了。
八、访问Nacos控制台
打开你的浏览器,输入下面的地址:
http://localhost:8848/nacos/
要是你是装在别的电脑上,就把localhost
换成那台电脑的IP地址。
进入Nacos控制台的登录页面后,用默认的账号和密码nacos
登录。登录成功后,你就能看到Nacos的控制台界面了,在这里你可以进行各种配置和管理操作。
九、总结
经过上面的步骤,你已经成功用Docker装好了Nacos。虽然过程看起来有点复杂,但只要跟着步骤一步步来,其实很简单。现在,你可以开始用Nacos来管你的微服务应用了。要是安装过程中遇到问题,可以去相关社区找找答案,或者参考一些教程。
💡 建议收藏本教程,以后搭建环境再也不用头大!如果你在安装过程中遇到问题,欢迎在评论区留言或私信我,一起交流学习!