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.pswp.cn/bicheng/90470.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue2——4

组件的样式冲突 scoped默认情况&#xff1a;写在组件中的样式会 全局生效 → 因此很容易造成多个组件之间的样式冲突问题。1. 全局样式: 默认组件中的样式会作用到全局2. 局部样式: 可以给组件加上 scoped 属性, 可以让样式只作用于当前组件原理&#xff1a;当前组件内标签都被…

30天打好数模基础-逻辑回归讲解

案例代码实现一、代码说明本案例针对信用卡欺诈检测二分类问题&#xff0c;完整实现逻辑回归的数据生成→预处理→模型训练→评估→阈值调整→决策边界可视化流程。数据生成&#xff1a;模拟1000条交易数据&#xff0c;其中欺诈样本占20%&#xff08;类不平衡&#xff09;&…

CDH yarn 重启后RM两个备

yarn rmadmin -transitionToActive --forcemanual rm1 cd /opt/cloudera/parcels/CDH/lib/zookeeper/bin/ ./zkCli.sh -server IT-CDH-Node01:2181 查看是否存在残留的ActiveBreadCrumb节点 ls /yarn-leader-election/yarnRM #若输出只有[ActiveBreadCrumb]&#xff08;正常应…

HTML5音频技术及Web Audio API深入解析

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;音频处理在IT行业中的多媒体、游戏开发、在线教育和音乐制作等应用领域中至关重要。本文详细探讨了HTML5中的 <audio> 标签和Web Audio API等技术&#xff0c;涉及音频的嵌入、播放、控制以及优化。特别…

每日面试题13:垃圾回收器什么时候STW?

STW是什么&#xff1f;——深入理解JVM垃圾回收中的"Stop-The-World"在Java程序运行过程中&#xff0c;JVM会通过垃圾回收&#xff08;GC&#xff09;自动管理内存&#xff0c;释放不再使用的对象以腾出空间。但你是否遇到过程序突然卡顿的情况&#xff1f;这可能与G…

【系统全面】常用SQL语句大全

一、基本查询语句 查询所有数据&#xff1a; SELECT * FROM 表名;查询特定列&#xff1a; SELECT 列名1, 列名2 FROM 表名;条件查询&#xff1a; SELECT * FROM 表名 WHERE 条件;模糊查询&#xff1a; SELECT * FROM 表名 WHERE 列名 LIKE 模式%;排序查询&#xff1a; SELECT *…

Spring之SSM整合流程详解(Spring+SpringMVC+MyBatis)

Spring之SSM整合流程详解-SpringSpringMVCMyBatis一、SSM整合的核心思路二、环境准备与依赖配置2.1 开发环境2.2 Maven依赖&#xff08;pom.xml&#xff09;三、整合配置文件&#xff08;核心步骤&#xff09;3.1 数据库配置&#xff08;db.properties&#xff09;3.2 Spring核…

C++STL系列之set和map系列

前言 set和map都是关联式容器&#xff0c;stl中树形结构的有四种&#xff0c;set&#xff0c;map&#xff0c;multiset,multimap.本次主要是讲他们的模拟实现和用法。 一、set、map、multiset、multimap set set的中文意思是集合&#xff0c;集合就说明不允许重复的元素 1……

Linux 磁盘挂载,查看uuid

lsblk -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINT,SIZEsudo ntfsfix /dev/nvme1n1p1sudo mount -o remount,rw /dev/nvme1n1p1 /media/yake/Datasudo ntfsfix /dev/sda2sudo mount -o remount,rw /dev/sda2 /media/yake/MyData

【AJAX】XMLHttpRequest、Promise 与 axios的关系

目录 一、AJAX原理 —— XMLHttpRequest 1.1 使用XMLHttpRequest 二、 XMLHttpRequest - 查询参数 &#xff08;就是往服务器后面拼接要查询的字符串&#xff09; 三、 地区查询 四、 XMLHttpRequest - 数据提交 五、 认识Promise 5.1 为什么 JavaScript 需要异步&#…

C++中的stack和queue

C中的stack和queue 前言 这一节的内容对于stack和queue的使用介绍会比较少&#xff0c;主要是因为stack和queue的使用十分简单&#xff0c;而且他们的功能主要也是在做题的时候才会显现。这一栏目暂时不会写关于做题的内容&#xff0c;后续我会额外开一个做题日记的栏目的。 这…

Spring Bean生命周期七步曲:定义、实例化、初始化、使用、销毁

各位小猿&#xff0c;程序员小猿开发笔记&#xff0c;希望大家共同进步。 引言 1.整体流程图 2.各阶段分析 1️⃣定义阶段 1.1 定位资源 Spring 扫描 Component、Service、Controller 等注解的类或解析 XML/Java Config 中的 Bean 定义 1.2定义 BeanDefinition 解析类信息…

API安全监测工具:数字经济的免疫哨兵

&#x1f4a5; 企业的三重致命威胁 1. 漏洞潜伏的定时炸弹 某支付平台未检测出API的批量数据泄露漏洞&#xff0c;导致230万用户信息被盗&#xff0c;面临GDPR 1.8亿欧元罚单&#xff08;IBM X-Force 2024报告&#xff09;。传统扫描器对逻辑漏洞漏检率超40%&#xff08;OWASP基…

Matplotlib详细教程(基础介绍,参数调整,绘图教程)

目录 一、初识Matploblib 1.1 安装 Matplotlib 1.2、Matplotlib 的两种接口风格 1.3、Figure 和 Axes 的深度理解 1.4 设置画布大小 1.5 设置网格线 1.6 设置坐标轴 1.7 设置刻度和标签 1.8 添加图例和标题 1.9 设置中文显示 1.10 调整子图布局 二、常用绘图教程 2…

Redis高可用架构演进面试笔记

1. 主从复制架构 核心概念Redis单节点并发能力有限&#xff0c;通过主从集群实现读写分离提升性能&#xff1a; Master节点&#xff1a;负责写操作Slave节点&#xff1a;负责读操作&#xff0c;从主节点同步数据 主从同步流程 全量同步&#xff08;首次同步&#xff09;建立连接…

无人机保养指南

定期清洁无人机在使用后容易积累灰尘、沙砾等杂物&#xff0c;需及时清洁。使用软毛刷或压缩空气清除电机、螺旋桨和机身缝隙中的杂质。避免使用湿布直接擦拭电子元件&#xff0c;防止短路。电池维护锂电池是无人机的核心部件&#xff0c;需避免过度放电或充电。长期存放时应保…

vlm MiniCPM 学习部署实战

目录 开源地址&#xff1a; 模型repo下载&#xff1a; 单图片demo&#xff1a; 多图推理demo&#xff1a; 论文学习笔记&#xff1a; 部署完整教程&#xff1a; 微调教程&#xff1a; 部署&#xff0c;微调教程&#xff0c;视频实测 BitCPM4 技术报告 创意&#xff1…

92套毕业相册PPT模版

致青春某大学同学聚会PPT模版&#xff0c;那些年我们一起走过的岁月PPT模版&#xff0c;某学院某班同学联谊会PPT模版&#xff0c;匆匆那年PPT模版&#xff0c;青春的纪念册PPT模版&#xff0c;栀子花开PPT模版&#xff0c;毕业纪念册PPT模版。 92套毕业相册PPT模版&#xff1…

爬虫基础概念

网络爬虫概述 概念 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;也称为网络蜘蛛&#xff08;Web Spider&#xff09;或机器人&#xff08;Bot&#xff09;&#xff0c;是一种自动化程序&#xff0c;用于系统地浏览互联网并收集网页信息。它模拟人类浏览器行为&…

java8 stream流操作的flatMap

我们来详细解释一下 Java 8 Stream API 中的 flatMap 操作。理解 flatMap 的关键在于将其与 map 操作进行对比。​​核心概念&#xff1a;​​​​map 操作&#xff1a;​​作用&#xff1a;将一个流中的每个元素​​转换​​为另一个元素&#xff08;类型可以不同&#xff09;…