阿里云轻量级服务器上使用docker-compose部署Nacos3.0.3(单机部署)
本文详细介绍了在阿里云服务器上使用Docker Compose部署Nacos 3.0.x的完整流程。内容涵盖环境准备、Docker Compose配置文件编写(包含MySQL持久化与关键JVM参数设置)、SpringBoot 3.2.5后端服务的集成注册方法(含依赖配置与示例代码),以及通过Nacos控制台验证服务注册成功的操作。最后简要提及常见问题排查方向与安全加固建议,为Nacos 3.x的容
环境准备与前提条件
- 提前在服务器上部署docker-compose,如若还未实现,请移步上一篇文章:阿里云轻量级服务器上docker-compose的安装教程-十二月_阿里云服务器 安装docker-compose-CSDN博客
- 阿里云轻量服务器配置要求:2核2G及以上配置
- 操作镜像:Alibaba Cloud Linux3.21.04
- 需开放8848(Nacos注册端口)、8080(Nacos3默认主页端口)、9848(gRPC端口)等防火墙规则
- 后端SpringBoot 3.2.5 + spring-alibaba-nacos-config 2023.0.3.2
- 使用到的软件:IDEA、MobaXterm、浏览器
一、服务器环境准备(JDK17)(非必须)
PS:Nacos 的 Docker 镜像在构建时,已经封装了其运行所需的 Java 环境。只需要直接使用镜像即可,无需在宿主机或容器内额外安装 JDK,此处JDK的安装可以跳过。
1.选择存档

2.找到17及以前的版本(本次使用17.0.1,Nacos3.x需JDK17支持)


3.复制该段地址,打开MobaXterm,连接服务器,使用命令新建一个目录并进入
mkdir /home/JDK
cd /home/JDK
然后使用该命令下载:
wget https://download.oracle.com/java/17/archive/jdk-17.0.1_linux-x64_bin.tar.gz
wget https://download.oracle.com/java/17/archive/jdk-17.0.1_linux-x64_bin.tar.gz

4.下载完毕后进行解压并移动
tar zxvf jdk-17.0.1_linux-x64_bin.tar.gz
mv jdk-17.0.1 /usr/local/
5.最后一步配置系统变量
(1)使用文本编辑器打开当前用户主目录下的.bashrc文件。
vim ~/.bashrc
(2)在.bashrc文件的末尾添加以下内容,并wq保持
(3)保存并关闭.bashrc文件后,在终端中执行以下命令,使刚刚添加的配置立即在当前会话中生效:
source ~/.bashrc
完毕后不需要重启服务器,在控制台输入 java --version有输出信息即成功
二、Nacos的正式部署,编写docker-compose.yml文件
- 示例配置包含Nacos 3.0.3镜像、MySQL 8.0作为持久化存储
- 关键参数说明:
MODE=standalone(单机模式)、JVM_XMS堆内存设置(重要!实测如果不对内存配置,很大可能导致服务器卡顿!)
version: "3.2"
services:
icms:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD : #(你的密码)
volumes:
- "$PWD/school/data:/var/lib/mysql"
- "$PWD/school/conf:/etc/mysql/conf.d"
ports:
- "3306:3306"
nacos:
image: nacos/nacos-server:v3.0.3
container_name: nacos
environment:
- MODE=standalone
#下面这仨可以自己设置
- NACOS_AUTH_TOKEN=bv2Rqyxb+xBRAuq1uL/TkXDZyBLNTJXokn44rT7fsik=
- NACOS_AUTH_IDENTITY_KEY=bmFjb3NfaWRlbnRpdHlfa2V5XzE3NTYxNzQyODE=
- NACOS_AUTH_IDENTITY_VALUE=bmFjb3NfaWRlbnRpdHlfdmFsdWVfMTc1NjE3NDI4OA==
#上面这仨可以自己设置
- JVM_XMS=512m
- JVM_XMX=1024m
- JVM_XMN=256m
- JVM_MS=64m
- JVM_MMS=128m
ports:
- "8848:8848"
- "9848:9848"
- "8080:8080"
volumes:
- ./data/:/home/docker/nacos/data
restart: always
保存后,使用命令启动:
docker-compose up -d
使用命令查看容器情况:
docker ps
出现下面框框中的两项即说明服务启动成功

此时我们回到自己的电脑上,在浏览器输入:http://(你的服务器公网ip):8080/(注意在3.x版本中默认的管理面板端口为8080且后面的路径不需要加/nacos)
即可进入Nacos控制面板(左上角有当前版本号和部署模式)
三、后端服务注册
1.新建SpringBoot项目,选择版本3.2.5(实测3.5.5会出现兼容问题)
2.Maven构建项目(web、springboot、spring-alibaba-nacos-config、spring-cloud-starter-alibaba-nacos-discovery)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.snowy</groupId>
<artifactId>nacos-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>nacos-test</name>
<description>nacos-test</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-alibaba-nacos-config</artifactId>
<version>2023.0.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2023.0.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
spring-cloud-starter-alibaba-nacos-discovery的版本号必须与SpringBoot的版本相匹配。
3.编辑配置文件application.yml
注意注册服务的端口必须为8848
server:
port: 9080
spring:
application:
name: nacostest
config:
import:
- "nacos:springboot3x:properties?group=DEFAULT_GROUP"
cloud:
nacos:
discovery:
server-addr: (公网ip):8848/
fail-fast: false
watch-delay: 30000
# 为plainKey提供默认值
plainKey: "defaultPlainKeyValue"
4.各个类的编写
主应用类 NacosTestApplication
@SpringBootApplication标记该类为Spring Boot应用的启动入口,整合了@Configuration、@EnableAutoConfiguration和@ComponentScan的功能。@EnableDiscoveryClient启用服务注册与发现功能,使应用能作为客户端注册到Nacos服务器。
package com.snowy.nacostest;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosTestApplication {
public static void main(String[] args) {
SpringApplication.run(NacosTestApplication.class, args);
}
}
ConfigController 控制器类
通过@RestController定义RESTful接口,演示Nacos配置管理功能。@Value注解从Nacos拉取配置值,@NacosConfigListener实现配置动态监听。接口/testPlainKey返回静态配置,/rate返回动态监听的配置值。该组件非服务注册核心逻辑,仅用于功能演示。
package com.snowy.nacostest.config;
import com.alibaba.cloud.nacos.annotation.NacosConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController {
@Value("${plainKey:defaultPlainKeyValue}")
String testKey;
@NacosConfig(dataId = "routeconfig", group = "config", key = "rate")
String rate;
@RequestMapping("/testPlainKey")
public String test() {
return testKey;
}
@RequestMapping("/rate")
public String rate() {
return rate;
}
}
MyRateConfigService 服务类
利用@NacosConfigListener监听指定配置ID(如rate.config)的变化,实时响应配置更新。当Nacos中配置被修改时,rate()方法自动触发并打印新值。此组件同样为配置管理演示模块,非服务注册必要部分。
package com.snowy.nacostest.service;
import com.alibaba.cloud.nacos.annotation.NacosConfigListener;
import org.springframework.stereotype.Service;
@Service
public class MyRateConfigService {
@NacosConfigListener(dataId = "routeconfig",group = "config")
public void rate(String rateConfig) {
System.out.println("receiveRateConfig:"+rateConfig);
}
}
最小化服务注册实现
-
依赖配置
确保pom.xml或build.gradle包含Nacos Discovery依赖:<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> -
配置文件
application.yml需指定Nacos服务器地址:spring: cloud: nacos: discovery: server-addr: ${NACOS_HOST:127.0.0.1}:8848 -
注解启用
主类需标注@EnableDiscoveryClient,其余配置管理和监听类可移除。
组件作用总结
- 必需组件:主应用类(含注解)、Nacos依赖、配置文件。
- 可选组件:
ConfigController和MyRateConfigService仅用于配置管理演示,不影响服务注册核心流程。删除后仍可正常注册服务到Nacos。
四、启动与验证服务


- 启动后端服务,端口9080
- 访问
http://服务器IP:8848/nacos,默认账号密码为nacos/nacos,查看服务列表
发现服务已成功注册到Nacos
五、常见问题与调优
- Nacos启动失败排查:容器日志分析(
docker logs nacos或者docker logs {id})、端口冲突检查(netstat -tuln | grep 8080或者8848)
六、安全加固
- 修改默认账号密码,启用Nacos鉴权功能
- 通过阿里云安全组限制8848端口仅允许内网或特定IP访问
七、备份与升级
- 定期备份MySQL数据与Nacos配置
- 版本升级步骤:修改镜像标签至目标版本,滚动更新容器
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)