首页 > 解决方案 > 如何访问存储在 Docker 容器内的“src/main/resources/someFolder”中的应用程序资源文件?

问题描述

我正在开发一个基于 gradle 的服务,该服务应该在 kubernetes 集群的 docker 容器中运行。在本地,我可以访问资源,一些用于 CouchDb 初始化的 json 文件。在 Docker 中构建和部署服务后,将无法再访问这些文件,并且出现找不到文件异常并且无法启动服务。我可以看到我的文件夹在生成的 jar 中,但我无法访问这些文件。我使用它如下:

DesignDocument design = DesignDocumentManager.fromFile("design-documents/documents.json");

它来自IBM Cloudant Java Client API。我尝试了路径的不同版本,即使用前导斜杠或项目的绝对路径。

标签: javajsondockergradlecloudant

解决方案


API 没有 File 的替代品,后者是操作系统文件。所以使用临时文件。

InputStream in = getClass().getResourceAsStream(
        "/design-documents/documents.json");
Path tempPath = Files.createTempFile("desdoc-", ".json");
Files.copy(in, tempPath);
DesignDocument design = DesignDocumentManager.fromFile(tempPath.toFile());
Files.delete(tempPath);

注意/Class.getResource(AsStream) 的前导。


推荐阅读