给出此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
中的文件。
请注意:
/usr/local/lib
文件夹复制到主机内部容器中并检查是否所有内容都存在。权限也可以,a + rx。是的,如果您想知道的话,webgenerator是lib中的子文件夹。我需要一个提示来理解为什么Java无法访问这些文件。
为了完整起见,这是我用来构建和运行容器的命令。
docker build -f WebGenerator.docker -t webgenerator:1.1 .
docker run -it webgenerator:1.1
答案 0 :(得分:0)
new File("webgenerator/wg_site/index.html").exists()
返回false。
使用该相对路径,您必须在容器中set the working directory到/usr/local/lib
。
WORKDIR /usr/local/lib
根据该工具的作用,您可能不希望将文件从主机复制到映像中,而是将它们作为卷挂载到容器中(以便该过程可以为您在主机上创建和更新文件) 。如果这是像编译器那样创建的文件,然后要在主机上使用的话,那将是正常的设置。这样,您不必在每次更改源文件时都重新构建映像。