如何访问存储在Docker容器中'src / main / resources / someFolder'中的app资源文件?

时间:2018-05-24 11:39:11

标签: java json docker gradle cloudant

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

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

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

1 个答案:

答案 0 :(得分:2)

API没有File的替代品,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)的前导/