Docker 部署 Nacos
Nacos 是阿里巴巴开源的服务发现、配置管理和服务管理平台。
快速开始
单机模式
docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-e MODE=standalone \
-e TZ="Asia/Shanghai" \
nacos/nacos-server:latest
使用 MySQL
1. 创建数据库
CREATE DATABASE nacos_config;
USE nacos_config;
SOURCE /path/to/nacos-mysql.sql;
2. 启动容器
docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
--network freekit-net \
nacos/nacos-server:latest
Docker Compose 部署
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: nacos-mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: nacos_config
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
- ./docker/nacos/sql:/docker-entrypoint-initdb.d
command: --default-authentication-plugin=mysql_native_password
nacos:
image: nacos/nacos-server:latest
container_name: nacos
ports:
- "8848:8848"
- "9848:9848"
environment:
MODE: standalone
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: mysql
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos_config
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: 123456
depends_on:
- mysql
volumes:
mysql-data:
高级配置
集群模式
version: '3.8'
services:
nacos1:
image: nacos/nacos-server:latest
container_name: nacos1
ports:
- "8848:8848"
- "9848:9848"
environment:
MODE: cluster
NACOS_SERVERS: "nacos1:8848 nacos2:8848 nacos3:8848"
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: mysql
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos_config
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: 123456
nacos2:
image: nacos/nacos-server:latest
container_name: nacos2
ports:
- "8849:8848"
- "9849:9848"
environment:
MODE: cluster
NACOS_SERVERS: "nacos1:8848 nacos2:8848 nacos3:8848"
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: mysql
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos_config
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: 123456
nacos3:
image: nacos/nacos-server:latest
container_name: nacos3
ports:
- "8850:8848"
- "9850:9848"
environment:
MODE: cluster
NACOS_SERVERS: "nacos1:8848 nacos2:8848 nacos3:8848"
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: mysql
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos_config
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: 123456
mysql:
image: mysql:8.0
container_name: nacos-mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: nacos_config
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
自定义配置
docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-e MODE=standalone \
-e JVM_XMS=256m \
-e JVM_XMX=512m \
-e JVM_XMN=128m \
-v /usr/local/nacos/logs:/home/nacos/logs \
-v /usr/local/nacos/conf/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server:latest
常用命令
# 查看日志
docker logs -f nacos
# 进入容器
docker exec -it nacos /bin/bash
# 查看配置
curl http://localhost:8848/nacos/v1/cs/configs?dataId=test&group=DEFAULT_GROUP
# 发布配置
curl -X POST "http://localhost:8848/nacos/v1/cs/configs?dataId=test&group=DEFAULT_GROUP&content=test"
运维建议
| 建议 | 说明 |
|---|---|
| 使用 MySQL | 生产环境使用 MySQL 持久化 |
| 集群部署 | 部署 3 个以上节点 |
| 备份数据 | 定期备份数据库 |
| 监控 | 监控 JVM 内存和连接数 |
故障排查
| 问题 | 解决方案 |
|---|---|
| 启动失败 | 检查 MySQL 连接 |
| 配置不生效 | 检查命名空间和分组 |
| 内存不足 | 调整 JVM 参数 |
| 连接超时 | 检查网络配置 |