You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot忽略环境变量:无法连接Eureka容器问题排查

应用无法连接Eureka容器,仍尝试访问localhost的问题

环境配置

Docker Compose 文件

version: '2.1'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8100:8100"
    depends_on:
      eureka:
        condition: service_healthy
    environment:
      EUREKA_URL: http://eureka:8761/eureka

  eureka:
    image: nadchel/eureka-server:1.0
    ports:
      - "8761:8761"
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://eureka:8761"]
      interval: 10s
      timeout: 10s
      retries: 10

应用POM依赖配置

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>token-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>token-service</name>
    <description>token-service</description>
    <properties>
        <java.version>17</java.version>
        <spring-cloud.version>2023.0.0</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

<!-- ... -->

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

应用配置文件

spring:
  application:
    name: token-service

eureka:
  client:
    availability-zones:
      defaultZone: ${EUREKA_URL:http://localhost:8761/eureka}

问题现象

应用启动后无法连接Eureka容器,日志报错如下:

token-service-app-1     | 2024-02-21T23:41:51.863Z  WARN 1 --- [token-service] [nfoReplicator-0]
c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: 
I/O error on POST request for "http://localhost:8761/eureka/apps/TOKEN-SERVICE": 
Connect to http://localhost:8761 [localhost/127.0.0.1] failed: Connection refused 

明明已经通过环境变量传入http://eureka:8761/eureka,且配置文件中引用了该变量,但应用仍尝试访问localhost。

已排查情况

  • 环境变量格式验证:Docker Compose中的environment格式符合官方规范,示例参考:
    environment:
      RACK_ENV: development
      SHOW: 'true'
      SESSION_SECRET:
    
  • 容器内环境变量确认:进入app容器执行env命令,已确认EUREKA_URL=http://eureka:8761/eureka存在:
    docker exec token-service-app-1 /bin/sh -c "env"                                                                              
    POSTGRES_USERNAME=postgres                                                                                                                                                  
    HOSTNAME=2e671f5bd313                                                                                                                                                       
    SHLVL=1                                                                                                                                                                     
    HOME=/root                                                                                                                                                                  
    EUREKA_URL=http://eureka:8761/eureka                                                                                                                                         
    POSTGRES_PASSWORD=postgres                                                                                                                                                  
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/default-jvm/bin                                                                              
    LANG=C.UTF-8                                                                                                                                                                
    POSTGRES_URL=jdbc:postgresql://db:5432/postgres                                                                                                                             
    JAVA_HOME=/usr/lib/jvm/default-jvm                                                                                                                                           
    PWD=/app   
    
  • 版本差异排查:对比了Eureka服务的版本,其使用Spring Boot 3.1.3和Spring Cloud 2022.0.4,与当前应用的版本存在差异,但其他同版本差异的服务可正常运行:
    <!-- Eureka的pom:Boot和Cloud版本稍旧 -->
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>3.1.3</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>EurekaServer</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>EurekaServer</name>
        <description>EurekaServer</description>
        <properties>
            <java.version>17</java.version>
            <spring-cloud.version>2022.0.4</spring-cloud.version>
    

内容的提问来源于stack exchange,提问作者Sergey Zolotarev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:32:03