带有本地存储库的 Spring Cloud Config Server 配置

Posted

技术标签:

【中文标题】带有本地存储库的 Spring Cloud Config Server 配置【英文标题】:Spring Cloud Config Server configuration with local repository 【发布时间】:2019-06-30 14:34:31 【问题描述】:

我正在尝试使用后端存储库(文件系统)设置 Spring Cloud Config Server,但端点(http://localhost:8888/licensingservice/default)返回以下内容:

"name":"licensingservice","profiles":["default"],"label":null,"version":null,"state":null,"propertySources":[]

主要:

@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication 

    public static void main(String[] args) 
        SpringApplication.run(ConfigServerApplication.class, args);
    

application.yml:

server:
   port: 8888
spring:
   profiles:
      active: native
    cloud:
       config:
          server:
             native:
                searchLocations: file:///Users/josedavi/Desenvolvimento/WorkSpace/Pessoal/sample-spring-microservices/sample-spring-microservices/config-server/src/main/resources/config

许可服务.yml:

tracer.property: "I AM THE DEFAULT"
spring.jpa.database: "POSTGRESQL"
spring.datasource.platform: "postgres"
spring.jpa.show-sql: "true"
spring.database.driverClassName: "org.postgresql.Driver"
spring.datasource.url: "jdbc:postgresql://database:5432/eagle_eye_local"
spring.datasource.username: "postgres"
spring.datasource.password: "p0stgr@s"
spring.datasource.testWhileIdle: "true"
spring.datasource.validationQuery: "SELECT 1"
spring.jpa.properties.hibernate.dialect: "org.hibernate.dialect.PostgreSQLDialect"

服务配置路径:

C:\Users\josedavi\Desenvolvimento\WorkSpace\Pessoal\sample-spring-microservices\sample-spring-microservices\config-server\src\main\resources\config

项目: https://github.com/jdavid-araujo/sample-spring-microservices

【问题讨论】:

我有一个工作正常的样本。你能提供一个重现问题的项目吗?你用的是什么版本? 我正在使用 Spring Boot:2.1.2 和 Spring Cloud:Greenwich。项目在 gitHub:github.com/jdavid-araujo/sample-spring-microservices. 【参考方案1】:

在配置服务的application.yml 中添加以下格式:

[类路径:/,类路径:/config,类路径:/config/application,类路径:/config/application/profile]

上述格式分别从config文件夹、application名称、application名称和profile文件夹中搜索位​​置。

spring:
   profiles:
      active: native
   cloud:
       config:
          server:
             native:
                searchLocations: "[classpath:/, classpath:/config, classpath:/config/application, classpath:/config/application/profile]"

【讨论】:

这对我不起作用。我把项目放在github上:github.com/jdavid-araujo/sample-spring-microservices 我检查了你的代码,你应该复制并粘贴上面的格式,你不需要更新任何东西。然后我会工作。 @DavidAraujo【参考方案2】:

看来问题出在您的searchLocations 属性上。路径必须到达licensingservice 文件夹本身,如果服务器为多个服务提供配置,则必须为每个服务设置路径(以逗号分隔)。

试试这个方法:

...
spring:
  ...
  cloud:
    config:
      server:
        native:
          searchLocations: file:///C:/Users/josedavi/Desenvolvimento/WorkSpace/Pessoal/sample-spring-microservices/sample-spring-microservices/config-server/src/main/resources/config/licensingservice

或者,您可以使用相对路径:

        ...
          searchLocations: classpath:config/licensingservice

另外,如果您正在阅读 Spring Microservices in Action 书籍(第 3 章),您可以查看 source code example 本身。

【讨论】:

【参考方案3】:

config server folder structure

然后在 application.yaml 文件中 云: 配置: 服务器: 本国的: 搜索位置:“[classpath:/, classpath:/config, classpath:/config/application, classpath:/config/application/profile]”

它会完美运行

【讨论】:

以上是关于带有本地存储库的 Spring Cloud Config Server 配置的主要内容,如果未能解决你的问题,请参考以下文章

多个存储库的 Spring Cloud Config Server 回退

Spring Cloud Config-Git后端

Spring Cloud Config-Git后端

带有 AWS 参数存储的 Spring Cloud

Spring Cloud - 环境库的使用

Spring Cloud Config + Spring Cloud Bus + RabbitMQ - 不使用本地 Git 存储库自动刷新客户端