- 本文为单机模式,非集群教程,埋坑
nacos2.x官方强制条件
64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
64 bit JDK 1.8+
Maven 3.2.x+
环境介绍
centos 7
maven 3.9.9
jdk 17
nacos 2.3.1
1. 拉取docker镜像
docker pull nacos/nacos-server:v2.3.1
#查看下载好的镜像
docker images
2. 创建挂载目录
#新建日志目录
mkdir -p /usr/local/nacos2.3.1-docker/logs
#新建conf目录
mkdir -p /usr/local/nacos2.3.1-docker/conf
3. 创建并启动容器
# 创建容器
docker run -d --name nacos2.3.1 -p 8848:8848 nacos/nacos-server:v2.3.1
docker run
: 这是启动一个新的容器的Docker命令。
参数说明-d
:
- 含义: 以分离模式(detached mode)运行容器,这意味着容器将在后台运行。
- 作用: 允许你在启动容器后立即释放终端,以便执行其他命令。
--name nacos2.3.1
:
- 含义: 为容器指定一个名称。
- 作用: 在此例中,容器将被命名为
nacos2.3.1
。命名容器可以让你更容易地管理和引用它。-p 8848:8848
:
- 含义: 将主机的端口映射到容器内的端口。
- 作用: 此参数将主机的8848端口映射到容器内部的8848端口。外部访问主机的8848端口时,请求会被转发到Nacos服务器在容器中的8848端口。
nacos/nacos-server:v2.3.1
:
- 含义: 指定要使用的镜像和标签。
- 作用: 使用
nacos/nacos-server
仓库中的v2.3.1
版本镜像来创建容器。这里的nacos/nacos-server
是Docker Hub上的镜像名称,而:v2.3.1
指定了该镜像的具体版本标签。
4.将容器中的配置与日志目录复制到本地
docker cp nacos2.3.1:/home/nacos/logs/ /usr/local/nacos2.3.1-docker
docker cp nacos2.3.1:/home/nacos/conf/ /usr/local/nacos2.3.1-docker
5. mysql中创建nacos所需的库表
在mysql中创建nacos库
CREATE DATABASE `nacos` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
将nacos目录下conf/mysql-schema.sql的内容复制到mysql中执行
6.删除原有容器并重新创建容器启动
停止并删除原有容器
docker stop nacos2.3.1 && docker rm nacos2.3.1
重新创建容器
docker run -d \
--name nacos2.3.1 \
-e NACOS_APPLICATION_PORT=8848 \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e MYSQL_SERVICE_HOST=10.1.1.101 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e NACOS_AUTH_TOKEN="看下面有怎么生成安全点的64位随机密钥" \
-e NACOS_AUTH_IDENTITY_KEY=nacos \
-e NACOS_AUTH_IDENTITY_VALUE=nacos \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_CACHE_ENABLE=true \
-e NACOS_SERVER_TIMEOUT=5000 \
-v /usr/local/nacos2.3.1-docker/logs:/home/nacos/logs \
-v /usr/local/nacos2.3.1-docker/conf/:/home/nacos/conf/ \
--restart=always \
nacos/nacos-server:v2.3.1
命令参数说明
docker run
: 启动一个新的容器。-d
:
- 含义: 以分离模式(detached mode)运行容器。
- 作用: 让容器在后台运行,释放当前终端。
--name nacos2.3.1
:
- 含义: 为容器指定名称。
- 作用: 将容器命名为
nacos2.3.1
,便于后续管理和引用。-e NACOS_APPLICATION_PORT=8848
:
- 含义: 设置环境变量。
- 作用: 指定Nacos服务的应用端口为
8848
。-p 8848:8848 -p 9848:9848 -p 9849:9849
:
- 含义: 端口映射。
- 作用: 将宿主机的端口映射到容器内的对应端口。这里将宿主机的
8848
、9848
和9849
端口分别映射到容器内的相同端口。--privileged=true
:
- 含义: 赋予容器扩展权限。
- 作用: 提供对所有设备的访问权限,并允许执行几乎所有的操作,如同在宿主机上直接运行一样。
-e JVM_XMS=256m -e JVM_XMX=256m
:
- 含义: 设置环境变量。
- 作用: 配置JVM的初始堆大小(Xms)和最大堆大小(Xmx)为256MB。
-e MODE=standalone
:
- 含义: 设置Nacos的工作模式。
- 作用: 指定Nacos以单机模式运行,适用于开发或测试环境。
-e MYSQL_SERVICE_HOST=10.1.1.101
:
- 设置MySQL数据库服务器的主机地址或IP。
-e MYSQL_SERVICE_PORT=3306
:
- 设置MySQL服务端口,默认是3306。
-e MYSQL_SERVICE_DB_NAME=nacos
:
- 设置要使用的数据库名称。
-e MYSQL_SERVICE_USER=root
:
- 设置用于连接数据库的用户名。
-e MYSQL_SERVICE_PASSWORD=root
:
- 设置上述用户的密码。
-e NACOS_AUTH_TOKEN="bmFjb3MuY29yZS5hdXRoLnBsdWdpbi5uYWNvcy50**********="
:- 含义: 设置认证令牌。
- 作用: 设置一个用于认证的令牌,保护Nacos API的安全性。此令牌应妥善保管,不应公开。
-e NACOS_AUTH_IDENTITY_KEY=nacos
:- 含义: 这个环境变量设置了一个键(key),用于身份验证机制中。在这个例子中,键被设为nacos
- 作用: 它的作用是定义了在进行身份验证时用来标识请求或者会话的一个关键字段。这个键值对可以用于验证请求是否来自可信的来源,从而增强安全性。
-e NACOS_AUTH_IDENTITY_VALUE=nacos
:- 含义: 此环境变量设置了与上述键对应的值(value)。这里,值同样被设为nacos。
- 作用: 它的作用是提供了与上面提到的身份验证键相对应的具体值。在执行身份验证的过程中,系统会检查提供的凭证是否匹配预设的键值对。只有当请求中包含正确的键和值时,才会被认为是有效的请求,从而允许访问受保护的资源或服务。
-e NACOS_AUTH_ENABLE=true
:
- 含义: 启用认证模块。
- 作用: 开启Nacos的认证功能,要求客户端在调用API时提供有效的凭证。
-e NACOS_AUTH_CACHE_ENABLE=true
:
- 含义: 启用认证缓存。
- 作用: 开启认证信息的缓存机制,提高认证效率。对于频繁的身份验证请求,启用缓存可以减少数据库查询次数,提升性能。
-e NACOS_SERVER_TIMEOUT=5000
:
- 含义: 设置超时时间。
- 作用: 设置Nacos服务端处理请求的超时时间为5秒(5000毫秒)。如果请求在这个时间内未完成,则会终止该请求。适当调整这个值可以根据实际网络情况优化性能。
-v /usr/local/nacos2.3.1-docker/logs/:/home/nacos/logs -v /usr/local/nacos2.3.1-docker/conf/:/home/nacos/conf/
:
- 含义: 绑定挂载卷。
- 作用: 将宿主机的目录挂载到容器内,以便持久化数据。这里将宿主机上的
/usr/local/nacos2.3.1-docker/logs/
和/usr/local/nacos2.3.1-docker/conf/
目录分别挂载到容器内的/home/nacos/logs
和/home/nacos/conf/
。--restart=always
:
- 含义: 设置重启策略。
- 作用: 如果容器停止,则总是尝试重启它,确保服务高可用性。
nacos/nacos-server:v2.3.1
:
- 含义: 使用的镜像及标签。
- 作用: 基于
nacos/nacos-server
仓库中的v2.3.1
版本镜像创建容器。
7.验证是否成功启动
查看docker中nacos日志
docker logs nacos2.3.1
浏览器访问
http://ip:8848/nacos/index.html
问题汇总
1.如何生成NACOS_AUTH_TOKEN
本质上就是设置一个复杂的字符串,越复杂越安全
使用 OpenSSL 命令行工具
openssl rand -base64 48