
minstonehub/nacos-server 镜像内置了多数据库初始化脚本, 通过下面的命令将镜像中的配置文件和数据库脚本拷贝到 /path/to/nacos 目录中!
注意: 请将本文档中的 /path/to/nacos 修改为你本地持久化 nacos 数据的绝对路径
sh# 通过命令复制出镜像中的配置文件和数据库脚本 docker run --rm --entrypoint "" -v "/path/to/nacos:/data" minstonehub/nacos-server:2.2.3 cp -r /home/nacos/conf/ /data/
通过下面的命令可以查看本次部署中使用到的文件:
sh# 进入 /path/to/nacos/conf 目录中 cd /path/to/nacos/conf && ls # 配置文件 application.properties # 所有的配置项目和描述 application.properties.example # 日志配置 nacos-logback.xml # 内置的 derby 数据库脚本 derby-schema.sql # MySQL 脚本 mysql-schema.sql # 达梦脚本 nacos-dm.sql # 翰高脚本 nacos-highgo.sql # 人大金仓脚本 nacos-kingbase.sql # Oracle 脚本 nacos-oracle.sql # 神州通用脚本 nacos-oscar.sql
镜像内置多数据源插件, 部署的方法如下:
/path/to/nacos/conf/nacos-*.sql 导入相应的数据库脚本到目标数据库中注意: 由于人大金仓和 Oracle 默认将空字符串设置为 NULL, 导致默认的命名空间失效, 需要参考下面的配置进行修改!
人大金仓数据库配置
当前版本 nacos 默认的命名空间为空字符串, 人大金仓数据库存储时会默认将空字符串设置为 NULL, 导致默认的命名空间失效, 处理方法如下:
kdb/data/kingbase.confora_input_emptystr_isnull 项配置true 则修改为 false, 如果没有配置, 需要新增 ora_input_emptystr_isnull = falseOracle 数据库配置
当前版本 nacos 默认的命名空间为空字符串, Oracle 数据库存储时会默认将空字符串设置为 NULL, 导致默认的命名空间失效, 处理方法如下:
init<数据库实例名称>.oraora_input_emptystr_isnull 项配置true 则修改为 false, 如果没有配置, 需要新增 ora_input_emptystr_isnull = falsenacos/conf/application.properties: 应用配置nacos/conf/cluster.properties: 集群配置/home/nacos/data: nacos 的数据目录/home/nacos/logs: nacos 的日志目录| 端口 | 与主端口的偏移量 | 描述 |
|---|---|---|
| 8848 | 0 | 主端口, 客户端、控制台及 OpenAPI 所使用的HTTP端口 |
| 9848 | 1000 | 客户端 gRPC 请求服务端端口, 用于客户端向服务端发起连接和请求 |
| 9849 | 1001 | 服务端 gRPC 请求服务端端口, 用于服务间同步等, 部署集群时需要开放 |
| 7848 | -1000 | Jraft 请求服务端端口, 用于处理服务端间的 Raft 相关请求, 部署集群时需要开放 |
注意: 使用 VIP/nginx 请求时, 需要配置成 TCP 转发, 不能配置 http2 转发, 否则连接会被 nginx 断开! 9849 和 7848 端口为服务端之间的通信端口, 请勿暴露到外部网络环境和客户端侧!
使用环境变量 MODE 配置, 可选配置如下:
| 值 | 描述 |
|---|---|
standalone | 单服务部署 |
cluster | 集群部署, 参考集群部署配置 |
集群部署可以通过指定 NACOS_SERVERS 参数来配置, 填写的集群地址需要符合如下格式
p1:port1空格ip2:port2空格ip3:port3
也可以通过挂载配置文件 nacos/conf/cluster.properties 来指定服务, 参考如下的配置:
conf#it is ip #example 192.168.16.101:8847 192.168.16.102 192.168.16.103
使用环境变量 PREFER_HOST_MODE 来指定 nacos 注册节点时使用 IP 或者主机名, 可以在集群管理 -> 节点列表中查看, 具体值如下:
| 值 | 描述 | 选项 |
|---|---|---|
hostname | 使用主机名 | |
ip | 使用 IP | 默认 |
nacos-server 提供简单的鉴权实现, 可以通过下面的环境变量配置设置客户端鉴权:
| 环境变量名称 | 描述 | 配置 |
|---|---|---|
| NACOS_AUTH_ENABLE | 是否开启权限系统 | 默认:false |
| NACOS_AUTH_TOKEN_EXPIRE_SECONDS | 用户登陆临时 accessToken 的过期时间 | 默认:*** |
| NACOS_AUTH_TOKEN | 默认鉴权插件用于生成用户登陆临时 accessToken 所使用的密钥 | 填写自定义密钥, 集群部署时需要保证所有的服务具有相同的密钥 |
| NACOS_AUTH_CACHE_ENABLE | 权限缓存开关, 开启后权限缓存的更新默认有 15 秒的延迟 | 默认 : false |
| NACOS_AUTH_IDENTITY_KEY | 配置自定义身份识别的 key | 填写自定义身份识别, 集群部署时需要保证所有的服务具有相同的身份识别 |
| NACOS_AUTH_IDENTITY_VALUE | 配置自定义身份识别的 value | 填写自定义身份识别, 集群部署时需要保证所有的服务具有相同的身份识别 |
开启客户端鉴权后, 需要配置客户端使用 nacos 用户登录, 可以参考下面的示例:
yamlnacos: config: server-addr: 127.0.0.1:8848 # 使用自定义身份的 key 和 value, 或者是有权限的 nacos 账号 username: 2222 password: 2xxx
外置数据库配置的参数, 可以通过以下设置环境变量值或者修改配置文件传值:
| 环境变量名称 | 描述 | 配置 |
|---|---|---|
| SPRING_DATASOURCE_PLATFORM | 数据源选择derby: 内嵌数据库, 默认值mysql: MySQL, nacos 内置base: 当前适配的其他数据源, 包括达梦, 人大金仓, Oracle, 翰高, 神州通用 | 默认: derby |
| DATASOURCE_URL | 数据库连接 | 使用外置数据源时必填 |
| DATASOURCE_USER | 数据库用户 | 使用外置数据源时必填 |
| DATASOURCE_PASSWORD | 数据库密码 | 使用外置数据源时必填 |
| DATASOURCE_DRIVER | 数据库驱动 | 使用外置数据源时必填 |
| DATASOURCE_TEST | 数据库测试语句 | 非必填 |
更多参数请参考 nacos 官网
docker runnacos 并使用内嵌数据源:shdocker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ minstonehub/nacos-server:2.2.3
nacos 并使用外置数据源:shdocker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -e NACOS_AUTH_IDENTITY_KEY=2222 \ -e NACOS_AUTH_IDENTITY_VALUE=2xxx \ -e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \ -e SPRING_DATASOURCE_PLATFORM=base \ -e DATASOURCE_URL="jdbc:kingbase8://IP:PORT/DATABASE?useUnicode=true&characterEncoding=utf-8" \ -e DATASOURCE_USER=USER \ -e DATASOURCE_PASSWORD=PASSWORD \ -e DATASOURCE_DRIVER=com.kingbase8.Driver \ -v /path/to/nacos/data:/home/nacos/data \ -v /path/to/nacos/logs:/home/nacos/logs \ minstonehub/nacos-server:2.2.3
shdocker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e DATASOURCE_URL="jdbc:mysql://IP:PORT/DATABASE?useUnicode=true&characterEncoding=utf8&useSSL=false" \ -e DATASOURCE_USER=USER \ -e DATASOURCE_PASSWORD=PASSWORD \ -e DATASOURCE_DRIVER=com.mysql.jdbc.Driver \ -v /path/to/nacos/data:/home/nacos/data \ -v /path/to/nacos/logs:/home/nacos/logs \ minstonehub/nacos-server:2.2.3
shdocker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -e SPRING_DATASOURCE_PLATFORM=base \ -e DATASOURCE_URL="jdbc:dm://IP:PORT/DATABASE" \ -e DATASOURCE_USER=USER \ -e DATASOURCE_PASSWORD=PASSWORD \ -e DATASOURCE_DRIVER=dm.jdbc.driver.DmDriver \ -v /path/to/nacos/data:/home/nacos/data \ -v /path/to/nacos/logs:/home/nacos/logs \ minstonehub/nacos-server:2.2.3
shdocker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -e SPRING_DATASOURCE_PLATFORM=base \ -e DATASOURCE_URL="jdbc:oracle:thin://IP:PORT/DATABASE" \ -e DATASOURCE_USER=USER \ -e DATASOURCE_PASSWORD=PASSWORD \ -e DATASOURCE_DRIVER=oracle.jdbc.OracleDriver \ -v /path/to/nacos/data:/home/nacos/data \ -v /path/to/nacos/logs:/home/nacos/logs \ minstonehub/nacos-server:2.2.3
docker-composenacos 并使用内嵌数据源:yamlnacos: image: minstonehub/nacos-server:2.2.3 container_name: nacos environment: - MODE=standalone - PREFER_HOST_MODE=hostname volumes: - /path/to/nacos/data:/home/nacos/data - /path/to/nacos/logs:/home/nacos/logs ports: - 8848:8848 - 9848:9848 networks: - myHost
nacos 并使用外置数据源:yamlnacos: image: minstonehub/nacos-server:2.2.3 container_name: nacos environment: - MODE=standalone - PREFER_HOST_MODE=hostname - SPRING_DATASOURCE_PLATFORM=base - DATASOURCE_URL="jdbc:kingbase8://IP:PORT/DATABASE?useUnicode=true&characterEncoding=utf-8" - DATASOURCE_USER=USER - DATASOURCE_PASSWORD=PASSWORD - DATASOURCE_DRIVER=com.kingbase8.Driver volumes: - /path/to/nacos/data:/home/nacos/data - /path/to/nacos/logs:/home/nacos/logs ports: - 8848:8848 - 9848:9848 networks: - myHost
yamlnacos: image: minstonehub/nacos-server:2.2.3 container_name: nacos environment: - MODE=standalone - PREFER_HOST_MODE=hostname - SPRING_DATASOURCE_PLATFORM=mysql - DATASOURCE_URL="jdbc:mysql://IP:PORT/DATABASE?useUnicode=true&characterEncoding=utf8&useSSL=false" - DATASOURCE_USER=USER - DATASOURCE_PASSWORD=PASSWORD - DATASOURCE_DRIVER=com.mysql.jdbc.Driver volumes: - /path/to/nacos/data:/home/nacos/data - /path/to/nacos/logs:/home/nacos/logs ports: - 8848:8848 - 9848:9848 networks: - myHost
yamlnacos: image: minstonehub/nacos-server:2.2.3 container_name: nacos environment: - MODE=standalone - PREFER_HOST_MODE=hostname - SPRING_DATASOURCE_PLATFORM=base - DATASOURCE_URL="jdbc:dm://IP:PORT/DATABASE" - DATASOURCE_USER=USER - DATASOURCE_PASSWORD=PASSWORD - DATASOURCE_DRIVER=dm.jdbc.driver.DmDriver volumes: - /path/to/nacos/data:/home/nacos/data - /path/to/nacos/logs:/home/nacos/logs ports: - 8848:8848 - 9848:9848 networks: - myHost
yamlnacos: image: minstonehub/nacos-server:2.2.3 container_name: nacos environment: - MODE=standalone - PREFER_HOST_MODE=hostname - SPRING_DATASOURCE_PLATFORM=base - DATASOURCE_URL="jdbc:oracle:thin://IP:PORT/DATABASE" - DATASOURCE_USER=USER - DATASOURCE_PASSWORD=PASSWORD - DATASOURCE_DRIVER=oracle.jdbc.OracleDriver volumes: - /path/to/nacos/data:/home/nacos/data - /path/to/nacos/logs:/home/nacos/logs ports: - 8848:8848 - 9848:9848 networks: - myHost
可以通过自定义配置文件进行数据库参数配置, 或者新增其他配置:
conf# 单数据库 db.num=1 # 第一个数据库参数配置, 这里以外置的人大金仓数据库为例子 db.url.0=jdbc:kingbase8://IP:PORT/DATABASE?useUnicode=true&characterEncoding=utf-8 db.user.0=USER db.password.0=PASSWORD # 数据库通用配置 db.pool.config.driverClassName=com.kingbase8.Driver db.pool.config.connectionTestQuery=SELECT 1
使用 docker run 挂载配置文件:
shdocker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -v /path/to/nacos/data:/home/nacos/data \ -v /path/to/nacos/logs:/home/nacos/logs \ -v /path/to/nacos/conf/application.properties:/home/nacos/conf/application.properties \ minstonehub/nacos-server:2.2.3
使用 docker-compose 时需要增加挂载点:
yamlnacos: image: minstonehub/nacos-server:2.2.3 container_name: nacos environment: - MODE=standalone - PREFER_HOST_MODE=hostname volumes: - /path/to/nacos/data:/home/nacos/data - /path/to/nacos/logs:/home/nacos/logs - /path/to/nacos/conf/application.properties:/home/nacos/conf/application.properties ports: - 8848:8848 - 9848:9848 networks: - myHost
启动错误时需要查看日志 /path/to/nacos/logs/config-fatal.log 进行排查!
JAVA_OPT="-Dfile.encoding=UTF8" 再启动 nacos




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务