在spring cloud中的bootstrap.yml上设置配置文件以定位不同的配置服务器

Hui*_*ang 14 docker spring-cloud

我使用docker compose来运行我所有的微服务.对于每项服务,我给它一个简短的主机名.

version: '2'

services: 
  config:
    image: springbox-config-server
    restart: always
    ports:
     - "8890:8890"

  discovery:
    image: springbox-eureka
    restart: always
    ports:
     - "8763:8763"
Run Code Online (Sandbox Code Playgroud)

因此,在我的微服务中,我必须使用其短主机名来定位配置服务器.

spring:
  application:
    name: myservice
  cloud:
    config:
      uri: http://config:8890
      fail-fast: true
Run Code Online (Sandbox Code Playgroud)

但是,当我在没有docker的IDE中本地运行它们时,无法解析短主机名.

所以我正在寻找一种解决方案,根据我的环境定位不同的配置服务器.

Hui*_*ang 28

我找到了解决方案.基本上,我们使用spring profile来丰富bootstrap文件.例如

spring:
  application:
    name: myservice
  cloud:
    config:
      uri: http://config:8890
      fail-fast: true

---
spring:
  profiles: development
  cloud:
    config:
      uri: http://localhost:8890
Run Code Online (Sandbox Code Playgroud)

好消息是我们不必重写配置文件中的所有属性.默认属性是继承的.例如,启用开发配置文件时,我的应用程序名称将继承自名为always myservice的默认应用程序名称.

要激活配置文件,请使用以下属性启动该服务

-Dspring.profiles.active=development
Run Code Online (Sandbox Code Playgroud)