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

微服务启动时bootstrap.yml未加载问题排查求助

微服务启动时bootstrap.yml被忽略问题排查

运行微服务时bootstrap.yml被忽略,启动日志中看不到程序尝试拉取配置中心的日志(缺失如下日志行):

service_1 | 2024-08-01T07:43:49.514Z  INFO 1 --- [service_1] [main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888

但执行mvn clean install进入测试阶段启动应用上下文时,能正常看到上述日志,推测是@SpringBootTest注解继承了@BootstrapWith,强制加载了bootstrap.yml。

项目依赖配置(pom.xml)

已包含Spring Cloud相关依赖,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.7</version>
        <relativePath/>
    </parent>
    <groupId>my.whatever</groupId>
    <artifactId>whatever-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>${project.artifactId}</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>17</java.version>
        <spring-boot.version>3.2.7</spring-boot.version>
        <spring-cloud.version>2023.0.2</spring-cloud.version>
    </properties>
    
    <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>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
</project>

bootstrap.yml配置

文件位于/src/main/resources目录下,内容如下:

spring:
  application:
    name: whatever-service
  cloud:
    config:
      uri: http://localhost:8888

补充排查:Docker镜像中缺失bootstrap.yml

深入排查发现bootstrap.yml未被打包到Docker镜像的jar包中:

  • 执行以下命令验证,无结果返回:
docker run -it --entrypoint sh whatever-service:0.0.1-SNAPSHOT
jar tf app.jar | grep bootstrap.yml
  • 尝试在Dockerfile中添加COPY src/main/resources/bootstrap.yml /app/bootstrap.yml,无效。

Docker构建相关配置

Docker Maven插件配置

<plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>${docker.maven-plugin.version}</version>
    <executions>
        <execution>
            <id>build-image</id>
            <phase>install</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
        <execution>
            <id>push-image</id>
            <phase>deploy</phase>
            <goals>
                <goal>push</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <pushRegistry>localhost:5000</pushRegistry>
        <images>
            <image>
                <name>${project.name}:${project.version}</name>
                <build>
                    <dockerFile>${project.basedir}/Dockerfile</dockerFile>
                    <args>
                        <VERSION>${project.version}</VERSION>
                    </args>
                </build>
            </image>
        </images>
    </configuration>
</plugin>

Dockerfile内容

# Build phase.
FROM maven:3.9.8-eclipse-temurin-17 as build
WORKDIR /data
COPY ./ /data
RUN mvn clean install -Dmaven.test.skip=true

# Deploy phase.
FROM eclipse-temurin:17.0.5_8-jdk-alpine
ARG VERSION
COPY --from=build /data/target/whatever-service-$VERSION.jar /app/app.jar
EXPOSE 8081
WORKDIR /app
ENTRYPOINT ["java", "-jar", "app.jar"]

构建命令

mvn clean install -DskipTests

补充插件版本信息

项目中其他插件及版本配置:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>17</java.version>
    <spring-boot.version>3.2.7</spring-boot.version>
    <spring-cloud.version>2023.0.2</spring-cloud.version>
    <junit.bom.version>5.10.1</junit.bom.version>
    <openapi.version>2.5.0</openapi.version>
    <docker.maven-plugin.version>0.44.0</docker.maven-plugin.version>
</properties>

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot.version}</version>
    <executions>
        <execution>
            <goals>
                <goal>build-info</goal>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <encoding>${project.build.sourceEncoding}</encoding>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>3.1.2</version>
    <executions>
        <execution>
            <id>default-deploy</id>
            <phase>none</phase> <!-- Disabilita il deploy standard -->
        </execution>
    </executions>
</plugin>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:52:06