podman安装单个nacos

结合你已在 Ubuntu 上通过 Podman 搭建好的 MySQL 5.7 主从复制环境,下面是在此基础上部署 Nacos 3.0 并接入该数据库的完整流程。


一、环境与版本说明

 
项目你已有的环境Nacos 3.0 要求
操作系统 Ubuntu Linux/Unix/macOS
容器运行时 Podman Podman 4.0+
数据库 MySQL 5.7 主从 MySQL 5.6.5+,5.7 完全兼容-21
JDK — Nacos 3.0 内置 JDK 17,无需额外安装

MySQL 5.7 是 Nacos 官方支持的版本,你现有主从架构可以直接作为 Nacos 的外部数据源。


二、MySQL 数据库初始化

2.1 在主库创建 Nacos 数据库和用户

进入你已有的 mysql-master 容器:

 
podman exec -it mysql-master mysql -uroot -proot

CREATE DATABASE IF NOT EXISTS nacos_config
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

CREATE USER 'nacos'@'%' IDENTIFIED BY 'Nacos@2024';
GRANT ALL PRIVILEGES ON nacos_config.* TO 'nacos'@'%';
FLUSH PRIVILEGES;

2.2 提取并导入官方 SQL 脚本

Nacos 3.0 的数据库表结构与 2.x 有差异,必须使用对应版本的 mysql-schema.sql-。

 
# 从 Nacos 3.0 镜像中提取 SQL 脚本
podman run -d --name nacos-temp nacos/nacos-server:v3.0.3
podman cp nacos-temp:/home/nacos/conf/mysql-schema.sql ./nacos-mysql.sql
podman rm -f nacos-temp

# 导入到 MySQL 主库
podman exec -i mysql-master mysql -uroot -proot nacos_config < ./nacos-mysql.sql

2.3 验证表结构

podman exec -it mysql-master mysql -uroot -proot nacos_config -e "SHOW TABLES;"

预期应包含 config_info、users、roles、permissions 等核心表。

主从同步确认:由于你已配置 MySQL 主从复制,导入脚本后,请进入从库验证 nacos_config 库和表是否已同步过来。如果未同步,请检查主从复制状态(SHOW SLAVE STATUS\G)。


三、Nacos 配置文件准备

在宿主机创建配置目录和 application.properties:

 
sudo mkdir -p /opt/nacos/conf /opt/nacos/logs /opt/nacos/data
sudo chown -R wt:wt /opt/nacos
确保nacos与mysql在podman内部的同一网络

创建 /opt/nacos/conf/application.properties:

 
# ========== MySQL 数据源配置 ==========
spring.sql.init.platform=mysql
db.num=1
db.url.0=jdbc:mysql://mysql-master:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.user=nacos
db.password=Nacos@2024

# ========== 鉴权配置(Nacos 3.0 必须开启) ==========
nacos.core.auth.enabled=true
nacos.core.auth.admin.enabled=true
nacos.core.auth.console.enabled=true
nacos.core.auth.system.type=nacos
nacos.core.auth.server.identity.key=ServerIdentityKey2024
nacos.core.auth.server.identity.value=ServerIdentityValue2024
nacos.core.auth.plugin.nacos.token.secret.key=<Base64编码的密钥>

关键说明:

  • db.url.0 中的 mysql-master 是你 Podman 网络中的容器名(前提是 Nacos 容器也加入同一网络)。

  • allowPublicKeyRetrieval=true 是 MySQL 8.0 的参数,但加上后对 5.7 也无副作用。

  • Token 密钥必须是 Base64 编码且原始字符串长度 ≥ 32 位,用 openssl rand -base64 48 生成。

  • 鉴权三要素不能为空,否则 Nacos 启动会失败-45。


四、使用 Podman 启动 Nacos 3.0

4.1 确保 Nacos 容器与 MySQL 在同一网络

你之前为 MySQL 主从创建了 mysql-net 网络,Nacos 也加入该网络,即可通过容器名直接访问数据库。

4.2 启动 Nacos 单机模式(连接现有 MySQL 5.7)

 
podman run -d \
  --name nacos-standalone \
  --restart always \
  --network mysql-net \
  -p 8080:8080 \
  -p 8848:8848 \
  -p 9848:9848 \
  -e MODE=standalone \
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_SERVICE_HOST=mysql-master \
  -e MYSQL_SERVICE_PORT=3306 \
  -e MYSQL_SERVICE_DB_NAME=nacos_config \
  -e MYSQL_SERVICE_USER=nacos \
  -e MYSQL_SERVICE_PASSWORD=Nacos@2024 \
  -e NACOS_AUTH_ENABLE=true \
  -e NACOS_AUTH_TOKEN=<Base64密钥> \
  -e NACOS_AUTH_IDENTITY_KEY=ServerIdentityKey2024 \
  -e NACOS_AUTH_IDENTITY_VALUE=ServerIdentityValue2024 \
  -e JVM_XMS=512m -e JVM_XMX=512m \
  -v /opt/nacos/logs:/home/nacos/logs \
  -v /opt/nacos/data:/home/nacos/data \
  -v /opt/nacos/conf/application.properties:/home/nacos/conf/application.properties \
  nacos/nacos-server:v3.0.3


改进版

podman run -d \

--name nacos-standalone \
--restart always \
--network mysql-net \
-p 8080:8080 \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql-master \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=Nacos@2024 \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_TOKEN=+Inm2KnoY8gV9WFoWJuXJBnUXsMlMj4pU/ZYjuJs8XzLgzskDSwQkBodLlqrMEh9 \
-e NACOS_AUTH_IDENTITY_KEY=ServerIdentityKey2024 \
-e NACOS_AUTH_IDENTITY_VALUE=ServerIdentityValue2024 \
-e JVM_XMS=512m -e JVM_XMX=512m \
-v /opt/nacos/logs:/home/nacos/logs \
-v /opt/nacos/data:/home/nacos/data \
-v /opt/nacos/conf/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server:v3.1.1


启动成功可以访问:
http://<服务器IP>:8080

为什么同时用环境变量和配置文件? Nacos 3.0 支持两种方式配置数据源:环境变量(MYSQL_SERVICE_*)和配置文件(db.url.0 等)。配置文件方式优先级更高,环境变量作为兜底。生产环境推荐以配置文件为主-21。

=======================================下面没试========================================

4.3 生产环境:集群模式(3 节点)

生产环境必须使用集群模式。先在每台节点创建 cluster.conf:

text
 
 
复制
 
 
下载
# /opt/nacos/conf/cluster.conf
192.168.1.10:8848
192.168.1.11:8848
192.168.1.12:8848

然后逐台启动:

bash
 
 
复制
 
 
下载
podman run -d \
  --name nacos-cluster \
  --restart always \
  --network host \
  -e MODE=cluster \
  -e NACOS_SERVERS="192.168.1.10:8848 192.168.1.11:8848 192.168.1.12:8848" \
  -e NACOS_SERVER_IP=192.168.1.10 \
  -e JVM_XMS=2g -e JVM_XMX=2g -e JVM_XMN=1g \
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_SERVICE_HOST=mysql-master \
  -e MYSQL_SERVICE_PORT=3306 \
  -e MYSQL_SERVICE_DB_NAME=nacos_config \
  -e MYSQL_SERVICE_USER=nacos \
  -e MYSQL_SERVICE_PASSWORD=Nacos@2024 \
  -e NACOS_AUTH_ENABLE=true \
  -e NACOS_AUTH_TOKEN=<Base64密钥> \
  -e NACOS_AUTH_IDENTITY_KEY=ServerIdentityKey2024 \
  -e NACOS_AUTH_IDENTITY_VALUE=ServerIdentityValue2024 \
  -v /opt/nacos/logs:/home/nacos/logs \
  -v /opt/nacos/data:/home/nacos/data \
  -v /opt/nacos/conf/application.properties:/home/nacos/conf/application.properties \
  -v /opt/nacos/conf/cluster.conf:/home/nacos/conf/cluster.conf \
  nacos/nacos-server:v3.0.3

集群模式需要额外开放 9848(客户端 gRPC)、9849(服务端 gRPC,仅集群内部)、7848(JRaft,仅集群内部)端口。


五、验证与访问

5.1 检查容器日志

bash
 
 
复制
 
 
下载
podman logs -f nacos-standalone
# 看到 "Nacos started successfully" 即启动成功

5.2 健康检查

curl http://localhost:8848/nacos/actuator/health

5.3 访问控制台

Nacos 3.0 的控制台端口是 8080,直接访问:

http://<服务器IP>:8080

首次登录用户名和密码均为 nacos,登录后系统会提示修改密码。


六、生产环境注意事项

6.1 数据库高可用

你已有的 MySQL 5.7 主从架构为 Nacos 提供了数据层的高可用基础。Nacos 的所有配置数据、用户权限、审计日志都存储在 MySQL 中,主从复制确保了数据库层面的容灾能力。

6.2 网络隔离与端口收敛

Nacos 是内部微服务组件,严禁暴露到公网。建议仅允许可信网段访问 8848、9848、9849 和控制台 8080 端口-。

6.3 鉴权安全

Nacos 3.0 控制台默认开启访问鉴权,鉴权相关配置必须进行配置-45。⚠️ 重要安全提示:Nacos 3.0.0 ~ 3.2.3 存在一个鉴权作用域错配漏洞,攻击者无需任何凭证即可在 8848 端口创建管理员账户,等同接管整个服务端。请务必升级到 3.2.4 或更高版本。

6.4 systemd 托管

bash
 
 
复制
 
 
下载
podman generate systemd --name nacos-standalone --files --new
mv container-nacos-standalone.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable container-nacos-standalone.service
systemctl start container-nacos-standalone.service

七、常见问题排查

 
问题原因解决方案
启动失败提示 Failed to initialize database 数据库连接信息错误或未初始化 检查 MYSQL_SERVICE_* 环境变量和 mysql-schema.sql 是否导入-12
Unknown database 'nacos_config' 数据库未创建 在主库执行 CREATE DATABASE nacos_config
Access denied for user 用户权限或密码错误 检查 nacos 用户是否创建,密码是否一致
连接超时 Nacos 容器与 MySQL 不在同一网络 确认 Nacos 容器加入了 mysql-net 网络
控制台无法访问 端口错误 Nacos 3.0 控制台端口是 8080,不是 8848
集群节点无法互相发现 cluster.conf 配置不一致 检查每台节点的 cluster.conf 内容是否相同

总结:你现有的 MySQL 5.7 主从环境完全满足 Nacos 3.0 的数据持久化需求。核心步骤是 初始化 nacos_config 库 → 编写 application.properties → 通过 Podman 启动 Nacos 并加入 mysql-net 网络。生产环境务必使用 3 节点集群 + 强鉴权 + 网络隔离,并将版本升级到 3.2.4+ 以规避已知安全漏洞。

 
posted on 2026-09-30 15:46  wtsgtc  阅读(19)  评论(0)    收藏  举报