一、为什么选择 Docker Compose 部署单机版 Nacos?
Nacos 作为阿里巴巴开源的动态服务发现、配置和服务管理平台,在微服务架构中扮演着核心角色。单机版部署适用于开发测试环境或小型项目,具有资源占用低、部署简单的特点。而 Docker Compose 通过一个 YAML 文件即可定义和管理多容器应用,极大简化了部署流程。相比手动安装,Docker Compose 的优势体现在:
- 环境一致性:通过镜像固化运行环境,避免因环境差异导致的部署问题。
- 快速复现:YAML 文件可版本化存储,团队成员或 CI/CD 流程可快速复现部署环境。
- 依赖管理:自动处理容器间的网络、存储卷等依赖关系。
- 扩展性:未来升级为集群模式时,仅需修改少量配置即可。
二、部署前环境准备
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验证)。
- Docker 20.10+(需支持 BuildKit,可通过
2. 安装 Docker 和 Docker Compose
以 Ubuntu 为例:
# 安装 Dockersudo apt updatesudo apt install -y docker.iosudo systemctl enable --now docker# 添加当前用户到 docker 组(避免每次使用 sudo)sudo usermod -aG docker $USERnewgrp docker # 立即生效# 安装 Docker Compose V2mkdir -p ~/.docker/cli-plugins/curl -SL https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-composechmod +x ~/.docker/cli-plugins/docker-compose
验证安装:
docker run hello-world # 测试 Dockerdocker compose version # 测试 Docker Compose
三、Docker Compose 部署单机版 Nacos
1. 创建项目目录结构
mkdir -p ~/nacos-docker && cd ~/nacos-docker
2. 编写 docker-compose.yml
version: '3.8'services:nacos:image: nacos/nacos-server:v2.3.2 # 使用官方最新稳定版镜像container_name: nacos-standaloneenvironment:- MODE=standalone # 设置为单机模式- PREFER_HOST_MODE=hostname # 优先使用主机名(避免 IP 变化问题)- JVM_XMS=512m # 初始堆内存- JVM_XMX=512m # 最大堆内存- JVM_XMN=256m # 新生代内存ports:- "8848:8848" # Nacos 默认端口- "9848:9848" # 集群通信端口(单机版无需但保留)volumes:- ./nacos-data:/home/nacos/data # 数据持久化- ./nacos-logs:/home/nacos/logs # 日志持久化restart: unless-stoppedhealthcheck:test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/v1/ns/health"]interval: 30stimeout: 10sretries: 3
关键配置说明:
- image:使用官方
nacos/nacos-server镜像,版本建议选择最新的稳定版(如 v2.3.2)。 - MODE=standalone:强制设置为单机模式,避免集群模式下的额外配置。
- JVM 参数:根据服务器内存调整,单机版 512MB 起步,生产环境建议 2GB+。
- 数据持久化:通过
volumes映射本地目录,防止容器重启后数据丢失。 - 健康检查:通过 HTTP 请求验证服务可用性,便于运维监控。
3. 启动 Nacos
docker compose up -d # 后台启动
启动后验证:
docker compose logs -f # 查看实时日志curl http://localhost:8848/nacos/v1/ns/health # 检查健康状态
四、部署后验证与测试
1. 访问 Nacos 控制台
浏览器打开 http://localhost:8848/nacos,默认用户名/密码为 nacos/nacos。
2. 测试服务注册与发现
2.1 注册测试服务
// Spring Cloud 示例(pom.xml 需引入 nacos-discovery 依赖)@SpringBootApplication@EnableDiscoveryClientpublic class TestService {public static void main(String[] args) {SpringApplication.run(TestService.class, args);}}// application.yml 配置spring:application:name: test-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848
2.2 验证服务列表
在 Nacos 控制台的「服务管理」→「服务列表」中应能看到 test-service。
3. 配置管理测试
3.1 创建配置
在控制台的「配置管理」→「配置列表」中新建配置:
- Data ID:
test-config - Group:
DEFAULT_GROUP - 配置格式:
YAML - 配置内容:
app:name: test-appversion: 1.0.0
3.2 读取配置(Spring Cloud 示例)
@RestControllerpublic class ConfigController {@Value("${app.name}")private String appName;@GetMapping("/config")public String getConfig() {return appName;}}
访问 http://localhost:8080/config(需确保 Spring Boot 端口为 8080)应返回 test-app。
五、常见问题与解决方案
1. 端口冲突
问题:8848 端口被占用。
解决:修改 docker-compose.yml 中的 ports 映射,例如:
ports:- "18848:8848" # 将宿主机端口改为 18848
2. 内存不足
问题:容器因 OOM(Out of Memory)崩溃。
解决:调整 JVM 参数或增加服务器内存:
environment:- JVM_XMS=1024m- JVM_XMX=1024m
3. 数据持久化失败
问题:重启后配置丢失。
解决:检查 volumes 映射的本地目录权限:
sudo chown -R 1000:1000 ~/nacos-docker/nacos-data # Nacos 容器默认用户 UID 为 1000
4. 健康检查失败
问题:healthcheck 持续失败。
解决:检查 Nacos 是否真正启动:
docker compose exec nacos bash -c "ps aux | grep java" # 查看 Java 进程
六、进阶优化建议
- 资源限制:在生产环境中,建议通过
deploy.resources限制容器资源:deploy:resources:limits:cpus: '1.0'memory: 1G
- 日志收集:集成 ELK 或 Loki+Promtail 收集日志。
- 备份策略:定期备份
nacos-data目录。 - 安全加固:修改默认密码,启用 HTTPS(需配置证书)。
七、总结
通过 Docker Compose 部署单机版 Nacos,开发者可以在 5 分钟内完成从环境准备到服务验证的全流程。本文提供的 YAML 配置已覆盖关键参数,并针对常见问题给出了解决方案。对于开发测试环境,此方案可显著提升效率;对于小型生产环境,通过适当的资源限制和备份策略,亦可稳定运行。
下一步建议:
- 参考 Nacos 官方文档 深入学习配置管理高级特性。
- 尝试将单机版升级为集群模式(需修改
MODE=cluster并配置nacos.standalone=false)。 - 结合 Spring Cloud Alibaba 或 Dubbo 实现服务注册与发现。