gpt4 book ai didi

java - Docker Java OpenJdk容器无法访问文件

转载 作者:行者123 更新时间:2023-12-01 22:49:24 34 4
gpt4 key购买 nike

给定这个 docker 文件

FROM openjdk:latest
COPY WebGenerator-1.0.0-jar-with-dependencies.jar /usr/local/lib/WebGenerator.jar
COPY webgenerator /usr/local/lib/webgenerator
EXPOSE 8085
ENTRYPOINT ["java","-jar","/usr/local/lib/WebGenerator.jar"]

我构建了一个运行 WebGenerator 的镜像。 jar运行顺利,它可以访问jar中嵌入的资源并导出为服务,但无法访问文件夹webgenerator内的文件。

请注意:

  • 当 jar 在容器外部的相同上下文中启动时,该文件通常可以访问
  • 文件夹及其所有结构已正确复制到容器内。我仔细检查了复制主机内容器内的整个 /usr/local/lib 文件夹,并检查所有内容是否都在那里。权限也行,a+rx。是的,如果您想知道的话,webgenerator 是 lib 中的一个子文件夹。

我需要一个提示来理解为什么 java 无法访问这些文件。

为了完整起见,这里是我用来构建和运行容器的命令。

docker build -f WebGenerator.docker -t webgenerator:1.1 .
docker run -it webgenerator:1.1

最佳答案

new File("webgenerator/wg_site/index.html").exists() return false.

使用该相对路径,您必须 set the working directory在您的容器中到 /usr/local/lib

WORKDIR /usr/local/lib

根据此工具的功能,您可能不希望将文件从主机复制到镜像中,而是将它们作为卷安装到容器中(以便该进程可以为您在主机上创建和更新文件) 。如果这类似于编译器创建您想要在主机上使用的文件,那么这将是正常的设置。这样,您就不必在每次更改源文件时重新构建镜像。

关于java - Docker Java OpenJdk容器无法访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58463025/

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