Docker部署Nacos保姆级教程

10人浏览 / 0人评论 / 添加收藏

我最近在学习Spring Cloud,但又不想在自己的电脑上安装Nacos,一是怕占了太多本地资源,二是感觉在服务器上用Docker来装Nacos会更方便、快捷。这样不仅能让我更熟悉服务器的操作,还能让我对Docker的使用更加熟练。于是,我决定在服务器上用Docker来安装Nacos,以及常用到的的MySql、Redis、Rabbitmq、kafka,没想到整个过程真的非常顺利,还让我对Spring Cloud的开发环境搭建有了新的认识。这个方式不仅能节省时间,还能让我更熟悉服务器部署流程,顺便练习 Docker 技能,一举多得!

前置知识(图解版)


一、什么是Docker和Nacos
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.4.3

这个命令就是从Docker Hub上把Nacos镜像给拉下来,版本号是v2.4.3。拉取速度看你的网速,可能要等一会儿。

如果大家这里运行报错,可以尝试使用下面的数据源:

docker pull nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v2.4.3
 

三、创建目录
为了能让Nacos持久化存储数据,要先在本地创建几个目录放配置文件、日志和数据。在终端里输下面的命令:

mkdir -p /data/nacos/{conf,logs,data}

linux可以支持以上命令,如果在windows下不支持该命令,可以拆开来写:

mkdir -p /data/nacos/conf

mkdir -p /data/nacos/data

mkdir -p /data/nacos/logs

这条命令是在/data/nacos/下面创建三个文件夹:conf(放配置文件)、logs(放日志文件)和data(放数据)。mkdir -p是说如果路径不存在就创建,{conf,logs,data}是同时建这三个文件夹的快捷方式。

四、创建Nacos容器
先用下面的命令创建一个Nacos容器:

docker run -p 8848:8848 --name nacos -d nacos/nacos-server:v2.4.3

或者使用:docker run -p 8848:8848 --name nacos -d nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v2.4.3

这里-p 8848:8848是把容器的8848端口映射到你电脑的8848端口,这样以后就能通过localhost:8848访问Nacos了。--name nacos是给这个容器起名字,方便后续操作。-d是让容器在后台运行。

把容器里的配置文件、日志文件和数据文件拷贝到刚才创建的目录里:

docker cp nacos:/home/nacos/conf /data/nacos
docker cp nacos:/home/nacos/data /data/nacos
docker 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.4.3


这个命令有点长,不过它做了好多重要的事:

-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来管你的微服务应用了。要是安装过程中遇到问题,可以去相关社区找找答案,或者参考一些教程。


全部评论