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服务器身份Keynacos身份标识键
NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE服务器身份Valuenacos123实际密码仍为nacos
NACOS_CORE_AUTH_PLUGIN_NACOS_TOKEN_SECRET_KEYToken密钥VGhpc0lzQVZhbGlkMzJCeXRlc1NlY3JldEtleTEyMzQ=32字节Base64编码
JVM_XMS初始堆内存256mJVM配置
JVM_XMX最大堆内存512mJVM配置

端口映射说明

端口协议用途
8848HTTPWeb控制台和HTTP API
9848gRPC客户端gRPC通信(Nacos 2.0+)
9849gRPC服务器间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

性能优化建议

  1. 根据服务器配置调整JVM参数

    • 小内存服务器:-e JVM_XMS=128m -e JVM_XMX=256m
    • 大内存服务器:-e JVM_XMS=1g -e JVM_XMX=2g
  2. 日志管理

    • 定期清理日志文件
    • 使用日志轮转策略
  3. 监控配置

    • 启用健康检查
    • 配置监控告警

总结

该部署方案基于实际验证,主要特点:

  1. 使用华为云SWR镜像,稳定可靠
  2. 完整的认证配置,保障安全
  3. 数据持久化,防止数据丢失
  4. 健康检查,确保服务可用性
  5. 详细的端口映射,支持Nacos 2.0+特性

此配置可直接用于生产环境,如需集群部署,只需修改MODE=cluster并配置集群节点即可。

更多推荐