Docker安装 Nacos 微服务

在 Docker 中安装 Nacos v2.5.1 并配置完整的文件映射(配置文件、日志、数据持久化),步骤如下:


1. 创建宿主机目录结构

bash 复制代码
mkdir -p /root/docker/nacos/{conf,logs,data}

2. 拉取镜像

bash 复制代码
docker pull nacos/nacos-server:v2.5.1

3. 复制容器默认配置文件到宿主机

运行临时容器复制默认配置文件到宿主机:

bash 复制代码
docker run -d --name nacos nacos/nacos-server:v2.5.1
docker cp nacos:/home/nacos/conf/. /root/docker/nacos/conf/
docker rm -f nacos

4. 创建数据库并表单初始化

运行临时容器复制默认配置文件到宿主机:

  • 创建test_nacos数据库

  • 导入/root/docker/nacos/conf/mysql-schema.sql文件

  • 创建账号密码nacos/nacos

    mysql 复制代码
    INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
    INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

4. 配置文件注意事项

编辑宿主机配置文件 /root/docker/nacos/conf/application.properties,例如:

properties 复制代码
### The default token:
# Base64加密前密码  lecher.S#Ea%b.-JAa2f63.5-TZ+G_WC
# Base64加密后密码  bGVjaGVyLlMjRWElYi4tSkFhMmY2My41LVRaK0dfV0M=
# 加密网站:https://www.qqxiuzi.cn/bianma/base64.htm
# 自定义密钥,在自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。同nacos.core.auth.plugin.nacos.token.secret.key

# 默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,在2.2.0.1后无默认值,必须执行此变更,否则无法启动;其他版本为建议设置。
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
# 用于替换useragent白名单的身份识别key,不可为空,2.2.1后无默认值
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:}
# 用于替换useragent白名单的身份识别value,不可为空,2.2.1后无默认值
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:}

5. 运行容器(完整文件映射)

bash 复制代码
docker run -d \
  --name nacos \
  -p 8848:8848 \
  -p 9848:9848 \
  -p 9849:9849 \
  -e MODE=standalone \
  -e NACOS_AUTH_ENABLE=true \
  -e NACOS_AUTH_TOKEN=bGVjaGVyLlMjRWElYi4tSkFhMmY2My41LVRaK0dfV0M= \
  -e NACOS_AUTH_IDENTITY_KEY=nacosKey \
  -e NACOS_AUTH_IDENTITY_VALUE=nacosValue \
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_SERVICE_HOST=192.168.204.129 \
  -e MYSQL_SERVICE_PORT=3306 \
  -e MYSQL_SERVICE_DB_NAME=test_nacos \
  -e MYSQL_SERVICE_USER=root \
  -e MYSQL_SERVICE_PASSWORD=123456 \
  -v /root/docker/nacos/conf:/home/nacos/conf \
  -v /root/docker/nacos/logs:/home/nacos/logs \
  -v /root/docker/nacos/data:/home/nacos/data \
  --restart=unless-stopped \
  nacos/nacos-server:v2.5.1

6. 验证文件映射

检查宿主机目录是否生成文件:

bash 复制代码
ls /root/docker/nacos/conf    # 应看到 application.properties
ls /root/docker/nacos/logs    # 应看到启动日志
ls /root/docker/nacos/data    # 应看到数据库文件(如使用内置Derby)

7. 访问控制台

访问 http://localhost:8848/nacos,使用默认账号 nacos/nacos 登录。


⚠️ 关键配置说明

参数 说明
-v /root/docker/nacos/conf 映射配置文件目录(必须提前复制容器内默认配置,否则容器无法启动)
-v /root/docker/nacos/logs 持久化日志文件
-v /root/docker/nacos/data 持久化数据文件(配置、服务信息等)
-e MODE=standalone 单机模式运行
-e NACOS_AUTH_ENABLE=true 强制开启鉴权(需配合配置文件中 nacos.core.auth.enabled=true

8. (可选)解决权限问题

如果容器报权限错误,为宿主机目录授予权限:

bash 复制代码
chmod -R 777 /root/docker/nacos

或使用 --user 指定用户:

bash 复制代码
docker run ... --user $(id -u):$(id -g) ...

9. 生产环境建议

  1. 修改默认账号密码 :在 application.properties 中配置:

    properties 复制代码
    nacos.core.auth.server.identity.key=your_secret_key
    nacos.core.auth.plugin.nacos.token.secret.key=your_token_key
  2. 集群部署 :修改 MODE=cluster 并配置 /root/docker/nacos/conf/cluster.conf

  3. 使用外置 MySQL:参考步骤4中的数据库配置


通过以上步骤,Nacos 的配置文件、日志、数据均已持久化到宿主机,容器重启或重建后配置不会丢失。

相关推荐
深思慎考6 小时前
微服务即时通讯系统(服务端)——用户子服务实现逻辑全解析(4)
linux·c++·微服务·云原生·架构·通讯系统·大学生项目
IT古董6 小时前
Windows 11 专业版 安装与配置 Docker Desktop 保姆级手册(包成功永久免关注免VIP)
windows·docker·容器
沐浴露z6 小时前
【微服务】基本概念介绍
java·微服务
serendipity_hky8 小时前
【微服务 - easy视频 | day02】全局过滤器+局部过滤器+全局拦截器
spring cloud·微服务·云原生·架构
小冯的编程学习之路9 小时前
【C++】: C++基于微服务的即时通讯系统(1)
开发语言·c++·微服务
qq_12498707539 小时前
基于微信小程序的茶叶茶具销售和管理系统(源码+论文+部署+安装)
微服务·微信小程序·小程序·毕业设计
风无雨10 小时前
windows docker 配置镜像
运维·docker·容器
java_logo11 小时前
NGINX WEBUI Docker 容器化部署指南
运维·nginx·docker·容器·centos·rabbitmq·运维开发
喵叔哟11 小时前
64.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--预算报表
微服务·架构·.net
i小杨11 小时前
Docker 相关使用收录
docker·容器·eureka