Spring Boot + Docker Compose外部YAML配置文件加载失败求助
问题分析与解决
首先看报错信息:
Config data resource 'file [config/backend-secrets.yaml]' via location 'file:./config/secrets.yaml' does not exist
结合你的Docker Compose配置,核心问题是路径不匹配:
- 你的
volumes配置将本地./config/secrets/目录挂载到容器内的/config目录,因此容器内配置文件的实际路径应为/config/backend-secrets.yaml(前提是本地./config/secrets/目录下确实存在backend-secrets.yaml文件)。 - 你设置的
SPRING_CONFIG_IMPORT使用相对路径./config/backend-secrets.yaml,该路径是相对于容器内应用的工作目录(通常是镜像默认的工作目录,比如/app),而非挂载的/config目录,导致Spring无法找到目标文件。
解决方案
修改Docker Compose中的环境变量路径为容器内的绝对路径:
services: backend: image: ghcr.io/acemint/something:main container_name: backend environment: # 改用容器内的绝对路径指向挂载目录下的配置文件 SPRING_CONFIG_IMPORT: file:/config/backend-secrets.yaml secrets: - backend_secrets volumes: - ./config/secrets/:/config
额外检查点
- 确认本地
./config/secrets/目录下存在backend-secrets.yaml文件,文件名和路径完全匹配(Linux容器区分大小写,注意避免大小写错误)。 - 若Spring应用镜像自定义了工作目录,也可使用相对路径,但必须确保该相对路径能指向挂载的
/config目录,不过绝对路径的可靠性更高。
内容的提问来源于stack exchange,提问作者Steven Kristian
相关产品推荐
相关产品推荐

