Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 容器化的spring应用程序看不到本地文件?_Spring Boot_Docker - Fatal编程技术网

Spring boot 容器化的spring应用程序看不到本地文件?

Spring boot 容器化的spring应用程序看不到本地文件?,spring-boot,docker,Spring Boot,Docker,我有一个spring启动应用程序和一个postgresql数据库。我使用docker compose在容器中运行这两个组件。问题是,正常调用,例如,localhost:8080/api/users返回正常值并正常运行 但是,当我尝试访问localhost:8080/api/images/x.png时,它应该返回一个图像,但我得到的是: java.io.FileNotFoundException: File '/tmp/tomcat-docbase.9528987821055837875.8080

我有一个spring启动应用程序和一个postgresql数据库。我使用
docker compose
在容器中运行这两个组件。问题是,正常调用,例如,
localhost:8080/api/users
返回正常值并正常运行

但是,当我尝试访问
localhost:8080/api/images/x.png
时,它应该返回一个图像,但我得到的是:

java.io.FileNotFoundException: File '/tmp/tomcat-docbase.9528987821055837875.8080/images/Mercedes-Benz-190E-Sedan-2.0 Petrol-1989-Engine.png' does not exist
这是最初的Dockerfile:

FROM openjdk:11-jre-slim
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
我把它改成这样:

FROM openjdk:11-jre-slim
ARG JAR_FILE=target/*.jar
ADD . ./src/main/webapp/images/
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
现在,当我尝试访问图像时,我得到以下信息:

java.io.FileNotFoundException: File '/src/main/webapp/images/Mercodes-Benz-190E-Sedan-2.0 Petrol-1989-Engine.png' does not exist
当应用程序从IDE本地启动时,调用工作得非常好,也许我的Dockerfile设置是错误的?我对docker还是个新手,任何提示都非常感谢


编辑:图像文件位于src/main/webapp/images/{files}

没有
src/main/webapp
,因为它是应用程序的根目录。当资源打包在jar/war中时,您不能以
java.util.File
的形式访问它,您只能将其作为inputstream加载。因此,请修复应返回此值的控制器/处理程序。或者,您可以只向容器中添加一个卷。@k-wasilewski我在这里如何操作使用--volume标记或只创建一个docker-compose.yml