背景

来自网络的一个微服务项目,结合了docker的配置。模板来自若依。

docker的rar文件来自项目资料,在云服务器上进行docker环境的配置如下:

docker load -i minio.tar
docker load -i mysql.tar
docker load -i nacos.tar
docker load -i rabbitmq.tar
docker load -i redis.tar
docker load -i sentinel.tar

# 启动容器(如果不存在容器就创建、存在则修改)
docker compose -f docker-compose.yml up -d

运行结果:

微服务root项目,maven编译:

 

输出构建成功:

[INFO] --- resources:3.3.1:resources (default-resources) @ spzx-product ---
[INFO] Copying 11 resources from src\main\resources to target\classes
[INFO] 
[INFO] --- compiler:3.13.0:compile (default-compile) @ spzx-product ---
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 50 source files with javac [debug target 17] to target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.736 s
[INFO] Finished at: 2025-11-11T19:26:08+08:00
[INFO] ------------------------------------------------------------------------

问题

 运行其中微服务子服务,出现了问题:

由于找不到配置文件引出的找不到数据库url的问题。

问题定位

上nacos网站查看存在所需的文件以及对应的配置

子项目服务所需的文件是:spzx-product-dev.yml,补充上传

配置内容完善没有问题

问题出在本地微服务的bootstrap.yml文件,原始的若依代码没有指定命名空间。

需要在config处加入命名空间的id,而不是命名空间的dev名称。如果存在其他分组不是默认的“DEFAULT_GROUP”,还需要指定分组。

# Tomcat
server:
  port: 9205

# Spring
spring:
  application:
    # 应用名称
    name: spzx-product
  profiles:
    # 环境配置
    active: dev
  main:
    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: *****:8848
      config:
        # 配置中心地址
        server-addr: *****:8848
        # 配置文件格式
        file-extension: yml

        namespace: 74bdcbff-0f71-464f-a94e-7d4c93a5a0f3
        #        group: DEFAULT_GROUP

        # 共享配置
        shared-configs:
application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
            refresh: true

修改成功之后成功运行。

更多推荐