当前位置: 首页 > news >正文

Nacos 封装与 Docker 部署实践

Nacos 封装与 Docker 部署指南

0 准备工作

核心概念​

命名空间:用于隔离不同环境(如 dev、test、prod)或业务线,默认命名空间为public。​
数据 ID:配置集的唯一标识,命名规则推荐为{服务名}-{profile}.{扩展名}(如user-service-dev.yaml)。​
分组:用于区分同一命名空间下的不同配置集,默认分组为DEFAULT_GROUP。

在pom.xml中添加:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.7.RELEASE</version> <!-- 与Spring Cloud版本匹配 -->
</dependency>

1.封装代码


@SpringBootApplication(scanBasePackages = "com.alibaba.nacos")
@ServletComponentScan
@EnableScheduling
public class SpringNacosApplication {// 建议将这些配置移到application.properties中@Value("${nacos.standalone}")private String standalone;@Value("${nacos.core.auth.enabled}") private String authEnabled;public static void main(String[] args) {SpringApplication.run(JeecgNacosApplication.class, args);}// 添加配置类@Configurationpublic static class NacosConfig {@Beanpublic ConfigurableEnvironment environment(ConfigurableEnvironment env) {Map<String, Object> config = new HashMap<>();config.put("nacos.standalone", standalone);config.put("nacos.core.auth.enabled", authEnabled);config.put("server.tomcat.basedir", "logs");config.put("server.port", "8848");env.getPropertySources().addFirst(new MapPropertySource("nacos-config", config));return env;}}
}

在 application.properties 中添加以下配置:

# Nacos 配置
nacos.standalone=true
nacos.core.auth.enabled=false# 服务器配置
server.port=8848
server.tomcat.basedir=logs

对于生产环境,建议:

  • 使用集群模式而非单机模式
  • 启用鉴权功能
  • 配置持久化到数据库
  • 设置合适的 JVM 参数

2. 部署前提​​

在部署 Nacos 前,需确保环境满足以下条件:​

  • JDK 版本:至少 JDK 1.8(推荐 1.8+),需配置JAVA_HOME环境变量。​
  • -MySQL(可选):集群模式需使用 MySQL 存储配置(推荐 5.7 + 或 8.0),单机模式可使用默认嵌入式数据库(Derby),但生产环境建议用 MySQL。​
  • 端口占用:Nacos 默认使用 3 个端口,需确保未被占用:​
    8848:主端口(控制台与 API 通信);​
    9848:客户端与服务端通信的 gRPC 端口;​
    9849:服务端间通信的 gRPC 端口。
    。​

3 Docker 部署配置

Dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

4. 端口配置

4.1. 防火墙和安全组配置

确保以下端口在服务器/开发机上开放:
8848 - Nacos 服务端口
9848 - Nacos 集群通信端口(如果是集群模式)
7848 - Nacos 集群选举端口(如果是集群模式)

4.2 容器化部署端口映射

ports:

  • “8848:8848” # 主机端口:容器端口
  • “9848:9848” # 集群通信端口
    dockers部署 这个很重要

4.3 启动容器

docker run -d \--name nacos-standalone \-p 8848:8848 \-p 9848:9848 \-p 9849:9849 \-e MODE=standalone \  # 指定单机模式-e JVM_XMS=512m \     # 初始堆内存-e JVM_XMX=512m \     # 最大堆内存nacos/nacos:2.2.3

参数说明:

  • -p:映射容器端口到宿主机(必须包含 8848、9849、9848);
  • MODE=standalone:强制单机模式(默认集群模式);
  • JVM_*:调整 JVM 参数,避免内存占用过高。

通用注意事项:
集群部署时,所有节点需处于同一网络,确保 9848/9849 端口可互通(gRPC 通信);
启动前检查端口占用,避免与其他服务冲突(可通过netstat -tunlp | grep 8848排查)。

5. 微服务连接配置

其他微服务连接 Nacos 时,确保配置正确的地址和端口:

spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848

6、常见问题与注意事项​

  • 启动失败:检查端口是否被占用(netstat -tunlp | grep 8848)、JDK 环境是否正确、数据库连接是否正常。​
  • 集群数据不一致:确保所有节点cluster.conf配置一致,且连接同一 MySQL。​
  • 配置不生效:检查bootstrap.yml中的server-addr、namespace(需用 ID)、dataId命名是否正确。​
  • 安全加固:生产环境需开启 Nacos 认证(application.properties中设置nacos.core.auth.enabled=true),并修改默认用户名密码。​
    通过以上步骤,可完成 Nacos 的部署与配置管理。Nacos 的高可用设计和动态配置能力,能有效简化微服务架构中的服务治理与配置维护工作。​
http://www.xdnf.cn/news/1173709.html

相关文章:

  • STP 的原理
  • 《计算机网络》实验报告六 电子邮件
  • string类
  • 深度智能 基座跃迁 | 鸿道Intewell,面向“AI+智造”的新型工业操作系统
  • OpenHarmony BUILD.gn中执行脚本
  • 论文笔记:Tuning Language Models by Proxy
  • 简单理解现代Web应用架构:从简单到企业级
  • 解决Spring事务中RPC调用无法回滚的问题
  • 使用idea 将一个git分支的部分记录合并到git另一个分支
  • Elasticsearch(ES)安装
  • 系统架构师:软件工程-思维导图
  • 通用表格识别技术的应用,深刻改变人们处理表格数据的方式
  • 【读代码】Facebook Denoiser:开源端到端语音降噪系统原理与实战
  • 红宝书单词学习笔记 list 76-100
  • 开源 Arkts 鸿蒙应用 开发(十)通讯--Http数据传输
  • Oracle物化视图详解
  • Linux权限机制:设计哲学、实现原理与安全实践
  • 算法->两正方形共占的面积
  • 【Redis】在Ubentu环境下安装Redis
  • docker的镜像与推送
  • 2025最新Mybatis-plus教程(二)
  • Packmol聚合物通道模型建模方法
  • 半导体 CIM(计算机集成制造)系统
  • 高亮匹配关键词样式highLightMatchString、replaceHTMLChar
  • Google DeepMind发布MoR架构:50%参数超越传统Transformer,推理速度提升2倍
  • OpenLayers 快速入门(七)矢量数据
  • Linux 环境下安装 MySQL 8.0.34 二进制 详细教程 附docker+k8s启动
  • 亚马逊广告优化技巧:如何减少预算浪费
  • 软件性能测试全景图:十维质量保障体系
  • Redis--多路复用