镜像内置了多数据库初始化脚本, 通过下面的命令将镜像中的配置文件和数据库脚本拷贝到 /path/to/nacos 目录中!
注意: 请将本文档中的 /path/to/nacos 修改为你本地持久化 nacos 数据的绝对路径
# 通过命令复制出镜像中的配置文件和数据库脚本
docker run --rm --entrypoint "" -v "/path/to/nacos:/data" minstonehub/nacos-server:2.2.3 cp -r /home/nacos/conf/ /data/
通过下面的命令可以查看本次部署中使用到的文件:
# 进入 /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 = false 当前版本 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 来指定服务, 参考如下的配置:
#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 的过期时间 | 默认:18000 |
| NACOS_AUTH_TOKEN | 默认鉴权插件用于生成用户登陆临时 accessToken 所使用的密钥 | 填写自定义密钥, 集群部署时需要保证所有的服务具有相同的密钥 |
| NACOS_AUTH_CACHE_ENABLE | 权限缓存开关, 开启后权限缓存的更新默认有 15 秒的延迟 | 默认 : false |
| NACOS_AUTH_IDENTITY_KEY | 配置自定义身份识别的 key | 填写自定义身份识别, 集群部署时需要保证所有的服务具有相同的身份识别 |
| NACOS_AUTH_IDENTITY_VALUE | 配置自定义身份识别的 value | 填写自定义身份识别, 集群部署时需要保证所有的服务具有相同的身份识别 |
开启客户端鉴权后, 需要配置客户端使用 nacos 用户登录, 可以参考下面的示例:
nacos:
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 并使用内嵌数据源:docker 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 并使用外置数据源:docker 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
docker 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
docker 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
docker 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 并使用内嵌数据源:nacos:
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 并使用外置数据源:nacos:
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
nacos:
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
nacos:
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
nacos:
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
可以通过自定义配置文件进行数据库参数配置, 或者新增其他配置:
# 单数据库
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 挂载配置文件:
docker 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 时需要增加挂载点:
nacos:
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" 再启动 nacosContent type
Image
Digest
sha256:694b110b5…
Size
228.6 MB
Last updated
over 1 year ago
docker pull minstonehub/nacos-server