Nacos 2.3.0 单机版 Docker 部署指南(华为云镜像版)
·
Docker Compose 部署文件
创建 docker-compose.yml:
version: '3.8'
services:
nacos:
image: swr.cn-east-3.myhuaweicloud.com/bocheng-test/nacos/nacos-server:v2.3.0
container_name: nacos-standalone
restart: unless-stopped
environment:
# 基础配置
- MODE=standalone
- PREFER_HOST_MODE=ip
# 认证配置(完整版)
- NACOS_AUTH_ENABLE=true
- NACOS_CORE_AUTH_ENABLED=true
- NACOS_CORE_AUTH_SYSTEM_TYPE=nacos
- NACOS_CORE_AUTH_SERVER_IDENTITY_KEY=nacos
- NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE=nacos123
- NACOS_CORE_AUTH_PLUGIN_NACOS_TOKEN_SECRET_KEY=VGhpc0lzQVZhbGlkMzJCeXRlc1NlY3JldEtleTEyMzQ=
# JVM配置
- JVM_XMS=256m
- JVM_XMX=512m
ports:
- "8848:8848"
- "9848:9848"
- "9849:9849"
volumes:
- ./data:/home/nacos/data
- ./logs:/home/nacos/logs
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8848/nacos/ || exit 1"]
interval: 30s
timeout: 10s
retries: 5
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
部署步骤
# 1. 创建项目目录
mkdir docker-nacos && cd docker-nacos
# 2. 创建数据目录
mkdir -p data logs
# 3. 创建 docker-compose.yml 文件(内容如上)
# 4. 启动服务
docker-compose up -d
# 5. 查看启动状态
docker-compose logs -f
访问信息
- 控制台地址: http://localhost:8848/nacos/
- 用户名: nacos
- 密码: nacos(注意:不是 nacos123)
配置说明
环境变量详解
| 环境变量 | 说明 | 配置值 | 备注 |
|---|---|---|---|
MODE | 运行模式 | standalone | 单机模式 |
PREFER_HOST_MODE | 主机模式 | ip | 使用IP地址 |
NACOS_AUTH_ENABLE | 启用认证 | true | 开启安全认证 |
NACOS_CORE_AUTH_ENABLED | 核心认证启用 | true | 必须为true |
NACOS_CORE_AUTH_SYSTEM_TYPE | 认证系统类型 | nacos | 使用Nacos认证 |
NACOS_CORE_AUTH_SERVER_IDENTITY_KEY | 服务器身份Key | nacos | 身份标识键 |
NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE | 服务器身份Value | nacos123 | 实际密码仍为nacos |
NACOS_CORE_AUTH_PLUGIN_NACOS_TOKEN_SECRET_KEY | Token密钥 | VGhpc0lzQVZhbGlkMzJCeXRlc1NlY3JldEtleTEyMzQ= | 32字节Base64编码 |
JVM_XMS | 初始堆内存 | 256m | JVM配置 |
JVM_XMX | 最大堆内存 | 512m | JVM配置 |
端口映射说明
| 端口 | 协议 | 用途 |
|---|---|---|
| 8848 | HTTP | Web控制台和HTTP API |
| 9848 | gRPC | 客户端gRPC通信(Nacos 2.0+) |
| 9849 | gRPC | 服务器间gRPC通信 |
重要注意事项
1. 认证密码说明
重要发现:尽管设置了 NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE=nacos123,但华为云镜像仍然使用Nacos的默认密码:
- 实际用户名: nacos
- 实际密码: nacos(不是nacos123)
2. Token密钥要求
NACOS_CORE_AUTH_PLUGIN_NACOS_TOKEN_SECRET_KEY 必须是:
- 32字节的Base64编码字符串
- 示例:
VGhpc0lzQVZhbGlkMzJCeXRlc1NlY3JldEtleTEyMzQ=
3. 数据持久化
通过卷挂载确保数据持久化:
./data:/home/nacos/data- 数据库数据./logs:/home/nacos/logs- 日志文件
管理命令
常用Docker Compose命令
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 查看服务状态
docker-compose ps
# 查看实时日志
docker-compose logs -f
# 重启服务
docker-compose restart
服务验证
# 检查容器状态
docker-compose ps
# 测试API访问
curl -u nacos:nacos "http://localhost:8848/nacos/v1/ns/service/list"
# 健康检查
curl "http://localhost:8848/nacos/actuator/health"
客户端配置
Spring Cloud 客户端
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
username: nacos
password: nacos
namespace: public
config:
server-addr: localhost:8848
username: nacos
password: nacos
file-extension: yaml
namespace: public
Java SDK 客户端
Properties properties = new Properties();
properties.put("serverAddr", "localhost:8848");
properties.put("username", "nacos");
properties.put("password", "nacos");
properties.put("namespace", "public");
NamingService namingService = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
故障排查
1. 服务无法启动
# 查看详细日志
docker-compose logs nacos
# 检查端口占用
netstat -tlnp | grep 8848
# 检查容器状态
docker-compose ps
2. 无法访问控制台
- 确认防火墙开放8848端口
- 检查浏览器缓存,尝试隐身模式访问
- 验证访问地址:http://ip:8848/nacos/(注意结尾斜杠)
3. 认证失败
- 使用默认密码:nacos/nacos
- 检查认证相关环境变量是否正确设置
- 查看认证日志:
docker-compose logs nacos | grep -i auth
备份与恢复
数据备份
# 备份数据目录
tar czvf nacos-backup-$(date +%Y%m%d).tar.gz data/
# 从容器内备份
docker-compose exec nacos tar czvf /tmp/nacos-data.tar.gz /home/nacos/data
docker-compose cp nacos:/tmp/nacos-data.tar.gz .
数据恢复
# 停止服务
docker-compose down
# 恢复数据
tar xzvf nacos-backup-YYYYMMDD.tar.gz
# 重新启动
docker-compose up -d
性能优化建议
-
根据服务器配置调整JVM参数:
- 小内存服务器:
-e JVM_XMS=128m -e JVM_XMX=256m - 大内存服务器:
-e JVM_XMS=1g -e JVM_XMX=2g
- 小内存服务器:
-
日志管理:
- 定期清理日志文件
- 使用日志轮转策略
-
监控配置:
- 启用健康检查
- 配置监控告警
总结
该部署方案基于实际验证,主要特点:
- 使用华为云SWR镜像,稳定可靠
- 完整的认证配置,保障安全
- 数据持久化,防止数据丢失
- 健康检查,确保服务可用性
- 详细的端口映射,支持Nacos 2.0+特性
此配置可直接用于生产环境,如需集群部署,只需修改MODE=cluster并配置集群节点即可。
更多推荐
所有评论(0)