Docker Compose 快速部署单机版 Nacos:从零到一全流程指南

作者:很菜不狗2025.10.30 20:35浏览量:0

简介:本文详细介绍如何使用 Docker Compose 快速部署单机版 Nacos,涵盖环境准备、配置优化、验证测试及常见问题解决方案,适合开发者和运维人员快速上手。

一、为什么选择 Docker Compose 部署单机版 Nacos?

Nacos 作为阿里巴巴开源的动态服务发现、配置和服务管理平台,在微服务架构中扮演着核心角色。单机版部署适用于开发测试环境或小型项目,具有资源占用低、部署简单的特点。而 Docker Compose 通过一个 YAML 文件即可定义和管理多容器应用,极大简化了部署流程。相比手动安装,Docker Compose 的优势体现在:

  1. 环境一致性:通过镜像固化运行环境,避免因环境差异导致的部署问题。
  2. 快速复现:YAML 文件可版本化存储,团队成员或 CI/CD 流程可快速复现部署环境。
  3. 依赖管理:自动处理容器间的网络、存储卷等依赖关系。
  4. 扩展性:未来升级为集群模式时,仅需修改少量配置即可。

二、部署前环境准备

1. 系统要求

  • 操作系统:Linux(推荐 Ubuntu 20.04+/CentOS 7+)、macOS 或 Windows 10/11(WSL2 推荐)。
  • 硬件:至少 2GB 内存(建议 4GB+),20GB 可用磁盘空间。
  • 软件依赖
    • Docker 20.10+(需支持 BuildKit,可通过 docker version 验证)。
    • Docker Compose V2(推荐最新稳定版,可通过 docker compose version 验证)。

2. 安装 Docker 和 Docker Compose

以 Ubuntu 为例:

  1. # 安装 Docker
  2. sudo apt update
  3. sudo apt install -y docker.io
  4. sudo systemctl enable --now docker
  5. # 添加当前用户到 docker 组(避免每次使用 sudo)
  6. sudo usermod -aG docker $USER
  7. newgrp docker # 立即生效
  8. # 安装 Docker Compose V2
  9. mkdir -p ~/.docker/cli-plugins/
  10. curl -SL https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
  11. chmod +x ~/.docker/cli-plugins/docker-compose

验证安装:

  1. docker run hello-world # 测试 Docker
  2. docker compose version # 测试 Docker Compose

三、Docker Compose 部署单机版 Nacos

1. 创建项目目录结构

  1. mkdir -p ~/nacos-docker && cd ~/nacos-docker

2. 编写 docker-compose.yml

  1. version: '3.8'
  2. services:
  3. nacos:
  4. image: nacos/nacos-server:v2.3.2 # 使用官方最新稳定版镜像
  5. container_name: nacos-standalone
  6. environment:
  7. - MODE=standalone # 设置为单机模式
  8. - PREFER_HOST_MODE=hostname # 优先使用主机名(避免 IP 变化问题)
  9. - JVM_XMS=512m # 初始堆内存
  10. - JVM_XMX=512m # 最大堆内存
  11. - JVM_XMN=256m # 新生代内存
  12. ports:
  13. - "8848:8848" # Nacos 默认端口
  14. - "9848:9848" # 集群通信端口(单机版无需但保留)
  15. volumes:
  16. - ./nacos-data:/home/nacos/data # 数据持久化
  17. - ./nacos-logs:/home/nacos/logs # 日志持久化
  18. restart: unless-stopped
  19. healthcheck:
  20. test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/v1/ns/health"]
  21. interval: 30s
  22. timeout: 10s
  23. retries: 3

关键配置说明:

  • image:使用官方 nacos/nacos-server 镜像,版本建议选择最新的稳定版(如 v2.3.2)。
  • MODE=standalone:强制设置为单机模式,避免集群模式下的额外配置。
  • JVM 参数:根据服务器内存调整,单机版 512MB 起步,生产环境建议 2GB+。
  • 数据持久化:通过 volumes 映射本地目录,防止容器重启后数据丢失。
  • 健康检查:通过 HTTP 请求验证服务可用性,便于运维监控。

3. 启动 Nacos

  1. docker compose up -d # 后台启动

启动后验证:

  1. docker compose logs -f # 查看实时日志
  2. curl http://localhost:8848/nacos/v1/ns/health # 检查健康状态

四、部署后验证与测试

1. 访问 Nacos 控制台

浏览器打开 http://localhost:8848/nacos,默认用户名/密码为 nacos/nacos

2. 测试服务注册与发现

2.1 注册测试服务

  1. // Spring Cloud 示例(pom.xml 需引入 nacos-discovery 依赖)
  2. @SpringBootApplication
  3. @EnableDiscoveryClient
  4. public class TestService {
  5. public static void main(String[] args) {
  6. SpringApplication.run(TestService.class, args);
  7. }
  8. }
  9. // application.yml 配置
  10. spring:
  11. application:
  12. name: test-service
  13. cloud:
  14. nacos:
  15. discovery:
  16. server-addr: 127.0.0.1:8848

2.2 验证服务列表

在 Nacos 控制台的「服务管理」→「服务列表」中应能看到 test-service

3. 配置管理测试

3.1 创建配置

在控制台的「配置管理」→「配置列表」中新建配置:

  • Data ID: test-config
  • Group: DEFAULT_GROUP
  • 配置格式: YAML
  • 配置内容:
    1. app:
    2. name: test-app
    3. version: 1.0.0

3.2 读取配置(Spring Cloud 示例)

  1. @RestController
  2. public class ConfigController {
  3. @Value("${app.name}")
  4. private String appName;
  5. @GetMapping("/config")
  6. public String getConfig() {
  7. return appName;
  8. }
  9. }

访问 http://localhost:8080/config(需确保 Spring Boot 端口为 8080)应返回 test-app

五、常见问题与解决方案

1. 端口冲突

问题:8848 端口被占用。
解决:修改 docker-compose.yml 中的 ports 映射,例如:

  1. ports:
  2. - "18848:8848" # 将宿主机端口改为 18848

2. 内存不足

问题:容器因 OOM(Out of Memory)崩溃。
解决:调整 JVM 参数或增加服务器内存:

  1. environment:
  2. - JVM_XMS=1024m
  3. - JVM_XMX=1024m

3. 数据持久化失败

问题:重启后配置丢失。
解决:检查 volumes 映射的本地目录权限:

  1. sudo chown -R 1000:1000 ~/nacos-docker/nacos-data # Nacos 容器默认用户 UID 为 1000

4. 健康检查失败

问题healthcheck 持续失败。
解决:检查 Nacos 是否真正启动:

  1. docker compose exec nacos bash -c "ps aux | grep java" # 查看 Java 进程

六、进阶优化建议

  1. 资源限制:在生产环境中,建议通过 deploy.resources 限制容器资源:
    1. deploy:
    2. resources:
    3. limits:
    4. cpus: '1.0'
    5. memory: 1G
  2. 日志收集:集成 ELK 或 Loki+Promtail 收集日志。
  3. 备份策略:定期备份 nacos-data 目录。
  4. 安全加固:修改默认密码,启用 HTTPS(需配置证书)。

七、总结

通过 Docker Compose 部署单机版 Nacos,开发者可以在 5 分钟内完成从环境准备到服务验证的全流程。本文提供的 YAML 配置已覆盖关键参数,并针对常见问题给出了解决方案。对于开发测试环境,此方案可显著提升效率;对于小型生产环境,通过适当的资源限制和备份策略,亦可稳定运行。

下一步建议

  • 参考 Nacos 官方文档 深入学习配置管理高级特性。
  • 尝试将单机版升级为集群模式(需修改 MODE=cluster 并配置 nacos.standalone=false)。
  • 结合 Spring Cloud Alibaba 或 Dubbo 实现服务注册与发现。