【问题标题】:How to access app resource files stored in 'src/main/resources/someFolder' within a Docker container?如何访问存储在 Docker 容器内的“src/main/resources/someFolder”中的应用程序资源文件?
【发布时间】:2018-05-24 11:39:11
【问题描述】:

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

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

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

【问题讨论】:

  • 请分享你到目前为止所做的尝试

标签: java json docker gradle cloudant


【解决方案1】:

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) 的前导 /

【讨论】:

  • 这对我有用,但我们决定使用另一个选项,即使用 Dockerfile 中的 COPY 将资源文件复制到容器中。
猜你喜欢
  • 2017-10-03
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 2020-09-13
  • 2018-09-16
  • 2019-07-07
  • 1970-01-01
  • 2014-03-25
相关资源
最近更新 更多