Spring Boot项目Docker容器中指定Profile配置文件加载异常问题
Spring Boot Docker容器无法加载指定Profile配置文件的问题
问题详情
- 基于Kotlin开发的Spring Boot 3.2.2项目,
resources目录下存放基础配置application.yml及Docker环境专属配置application-docker.yml,后者包含前者没有的配置项(例如server.ssl.key-store) - 本地通过IntelliJ激活
dockerProfile运行时,配置正常加载,两个文件自动合并并覆盖重复项 - 构建Docker镜像后直接运行容器,仅加载
application.yml,application-docker.yml未被读取,导致仅存在于docker配置中的项报错:Required key 'server.ssl.key-store' not found - 已完成的排查:
- 容器日志确认
docker为激活的Profile - 容器内执行命令
jar tf /app/dev-epj-0.0.1-SNAPSHOT.jar | grep application-docker.yml,验证配置文件已打包进Jar包 - 特殊情况:通过IntelliJ启动Docker容器时一切正常,仅直接运行镜像出现问题
- 容器日志确认
项目Dockerfile内容
FROM maven:3.8.5-openjdk-17 AS build WORKDIR /app COPY pom.xml . RUN mvn dependency:go-offline -B COPY src ./src RUN mvn clean package -DskipTests FROM openjdk:17-jdk-slim WORKDIR /app COPY --from=build /app/target/*.jar dev-epj-0.0.1-SNAPSHOT.jar COPY src/main/resources/keystore/localhost.p12 /app/keystore/localhost.p12 ENV SPRING_PROFILES_ACTIVE=DOCKER EXPOSE 7073 ENTRYPOINT ["java", "-jar", "dev-epj-0.0.1-SNAPSHOT.jar"]
最终解决方法
经过排查,确定是Docker自身运行异常导致的问题,重启Docker(连带重启Mac主机)后,容器可以正常加载application-docker.yml配置文件,问题解决。
内容的提问来源于stack exchange,提问作者RandomCoder
相关产品推荐
相关产品推荐

