如何访问 Docker 容器中存储在 'src/main/resources/someFolder' 中的应用程序资源文件?
How to access app resource files stored in 'src/main/resources/someFolder' within a Docker container?
我正在开发一个基于 gradle 的服务,该服务应该 运行 在 kubernetes 集群的 docker 容器中。在本地,我可以访问资源,一些用于 CouchDb 初始化的 json 文件。一旦我在 Docker 中构建并部署了服务,就无法再访问这些文件,并且我收到文件未找到异常并且无法启动该服务。我可以看到我的文件夹在生成的 jar 中,但我无法访问这些文件。
我正在使用它如下:
DesignDocument design = DesignDocumentManager.fromFile("design-documents/documents.json");
来自IBM Cloudant Java Client API。我尝试了不同版本的路径,即带有前导斜线或项目的绝对路径。
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) 的前导 /
。
我正在开发一个基于 gradle 的服务,该服务应该 运行 在 kubernetes 集群的 docker 容器中。在本地,我可以访问资源,一些用于 CouchDb 初始化的 json 文件。一旦我在 Docker 中构建并部署了服务,就无法再访问这些文件,并且我收到文件未找到异常并且无法启动该服务。我可以看到我的文件夹在生成的 jar 中,但我无法访问这些文件。 我正在使用它如下:
DesignDocument design = DesignDocumentManager.fromFile("design-documents/documents.json");
来自IBM Cloudant Java Client API。我尝试了不同版本的路径,即带有前导斜线或项目的绝对路径。
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) 的前导 /
。