跳到主要内容

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 参数
连接超时检查网络配置

相关文档