gpt4 book ai didi

java - 无法在 Docker 环境中使用 Spring ResourceUtils 或 DefaultResourceLoader 获取类路径资源

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:56 25 4
gpt4 key购买 nike

我正在开发一个spring-boot web应用程序,我需要获取一些类路径资源,所以我使用下面的方法:

@Autowired
private Enviroment env;



String fileLocation = ResourceUtils.getFile(env.getProperty("common.cert-location")).getAbsolutePath();
<小时/>

String fileLocation = new DefaultResourceLoader().getResource("filename").getFile().getPath();

它们都在本地环境中正常运行,但是当我打包应用程序并在 Docker 镜像中运行它时,它会抛出异常。我怎样才能获得资源?谢谢!

最佳答案

如果我理解正确,您会尝试从文件系统加载文件。文件位置是使用环境变量传入的。

如果正确,您可以使用 ADD myresource.file/myresource.fileDockerfile 中添加所需的文件。这会将 myresource.file 放入容器的根目录中。

现在,如果您运行容器,则可以使用 docker run -e common.cert-location=/myresource.file 传递环境变量 common.cert-location

一个补充:您可以添加 Spring Boot 应用程序属性而不是环境变量。然后设置一个与容器中的属性同名的环境变量。 Spring Boot 应该默认选择该变量。

您还可以使用env_file,而不是使用-e参数让容器知道变量。这允许您将所有环境变量放入一个文件中并将它们推送到容器中。

与 Spring Boot 应用程序属性结合使用,您可以使用单个文件中定义的环境变量覆盖所有应用程序属性。我认为这是在容器内配置启动应用程序的一种很好的、​​一致的方式。

关于java - 无法在 Docker 环境中使用 Spring ResourceUtils 或 DefaultResourceLoader 获取类路径资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43906309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com