docker - 在 Spring Cloud 中的 bootstrap.yml 上设置配置文件以针对不同的配置服务器

标签 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"

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

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

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

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

最佳答案

我找到了解决方案。基本上,我们使用 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

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

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

-Dspring.profiles.active=development

关于docker - 在 Spring Cloud 中的 bootstrap.yml 上设置配置文件以针对不同的配置服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36934873/

相关文章:

python - 访问容器中的数据库

django - Docker - Django 设置 - Gunicorn ok 但不是 manage.py

适用于 Windows 的 Docker : Accessing named volume mounts

spring - Spring Boot 2.0.1 中未提供执行器/refresh

java - 从 Spring Cloud Config Server 获取配置时 Spring 配置文件排序不正确

docker - Eureka 客户端的 "prefer-ip-address"无法在 docker 容器中工作

logging - 如何访问 Google AppEngine 管理的 VM 日志?

java - 带有 Docker : environment variable to override RabbitMQ host IP property in spring boot's application. 属性的 Spring Boot 不工作

spring-cloud - 如何使用 Zuul(无 Eureka、Spring Cloud)公开 Actuator 端点?

amazon-web-services - AWS-SQS : How to set maxConcurrentConsumers?