Spring boot 在使用docker时,如何使Eureka客户端中的Eureka服务器url保持动态?

Spring boot 在使用docker时,如何使Eureka客户端中的Eureka服务器url保持动态?,spring-boot,docker,docker-compose,microservices,fabric8-maven-plugin,Spring Boot,Docker,Docker Compose,Microservices,Fabric8 Maven Plugin,我正在使用fabric8 docker maven插件为我的Spring boot微服务构建映像 <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> 我无法从fabrib8插件传递“EUREKA_服务器”的值。我尝试了下面的代码来传递值,但它不起作用 <docker.env.JAVA_OPTS>-DEUREKA_SERVER=http:/

我正在使用fabric8 docker maven插件为我的Spring boot微服务构建映像

<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
我无法从fabrib8插件传递“EUREKA_服务器”的值。我尝试了下面的代码来传递值,但它不起作用

<docker.env.JAVA_OPTS>-DEUREKA_SERVER=http://discovery:8761/eureka</docker.env.JAVA_OPTS>
-DEUREKA_服务器=http://discovery:8761/eureka

弹簧可以拾取环境变量。因此,如果您将环境变量添加到运行Spring Boot的Docker容器中,它们将起作用。这避免了预先提供静态URL的需要

如果使用Docker Compose,它可能如下所示:

services:
  eureka:
    image: springcloud/eureka
    container_name: eureka
    ports:
      - "8761:8761"
    networks:
      - "discovery"
    environment:
      - EUREKA_INSTANCE_PREFERIPADDRESS=true

  spring:
    build:
      context: .
      dockerfile: ./src/main/docker/Dockerfile
    depends_on:
      - eureka
    container_name: spring
    ports:
     - "8080:8080"
    networks:
     - "discovery"
    environment:
      - EUREKA_SERVICE_URL=http://eureka:8761 // This overrides your Spring Property
      - EUREKA_INSTANCE_PREFER_IP_ADDRESS=true
      - LOGGING_FILE=/tmp/admin.log
注意:由于环境变量不是YAML,因此需要稍微更改格式

services:
  eureka:
    image: springcloud/eureka
    container_name: eureka
    ports:
      - "8761:8761"
    networks:
      - "discovery"
    environment:
      - EUREKA_INSTANCE_PREFERIPADDRESS=true

  spring:
    build:
      context: .
      dockerfile: ./src/main/docker/Dockerfile
    depends_on:
      - eureka
    container_name: spring
    ports:
     - "8080:8080"
    networks:
     - "discovery"
    environment:
      - EUREKA_SERVICE_URL=http://eureka:8761 // This overrides your Spring Property
      - EUREKA_INSTANCE_PREFER_IP_ADDRESS=true
      - LOGGING_FILE=/tmp/admin.log