Amazon web services 如何在AWS上托管的docker容器中使用spring boot加载静态文件?
我让我的SpringBoot应用程序在docker容器中运行,docker容器由Dockerfile构建,托管在AWS ubuntu实例上。 除了我有一个图像、一个css文件和一个不加载的js文件之外,所有的东西都工作得很好。检查页面时,这些文件显示404未找到错误。 我已使用winscp将文件上载到aws实例。在myApp文件夹中,我的docker文件所在的位置以及我构建容器的位置 目录结构为:Amazon web services 如何在AWS上托管的docker容器中使用spring boot加载静态文件?,amazon-web-services,spring-boot,docker,static-files,Amazon Web Services,Spring Boot,Docker,Static Files,我让我的SpringBoot应用程序在docker容器中运行,docker容器由Dockerfile构建,托管在AWS ubuntu实例上。 除了我有一个图像、一个css文件和一个不加载的js文件之外,所有的东西都工作得很好。检查页面时,这些文件显示404未找到错误。 我已使用winscp将文件上载到aws实例。在myApp文件夹中,我的docker文件所在的位置以及我构建容器的位置 目录结构为: myApp -Dockerfile -target -myApp.jar -
myApp
-Dockerfile
-target
-myApp.jar
-src
-main
-java
-[all my code in respective subdirectories]
-resources
-static
-my.js
-my.css
-my.jpg
-templates
-folder1
-html
-html2
-folder2
-html
-html2
我几乎可以肯定我的问题在于docker容器和dockerfile
Spring Boot会自动在/src/main/resources/static中查找静态文件。我想我的docker容器没有这个文件结构
这是我的文件
FROM ubuntu:latest
RUN apt-get update && apt-get install -y openjdk-14-jdk
WORKDIR /usr/local/bin/myApp
ADD . /src/main/resources/static
ADD target/myapp.jar .
ENTRYPOINT ["java", "-jar", "myApp.jar"]
当我构建容器时,它会显示成功复制和构建的所有内容,但不会访问文件。对我来说奇怪的是SpringBoot从静态文件夹中提供正确的模板。在这件事上我完全不知所措。我已尝试从dockerfile中单独添加资源,但仍然没有成功。您正在设置
WORKDIR
,然后使用相对路径将.jar
复制到该位置,但在复制其他内容(/src/main/resources/static
)时,您使用的绝对路径正在完全破坏您的文件夹结构(因为这些文件不会复制到您的WORKDIR
引用的文件夹中)。您可能忘记了路径前面的
(点)-/src/main/resources/static
运行
docker exec-it bash
以访问正在运行的容器,并查看复制的内容,如果您不确定,从那时起,修复Dockerfile中的内容应该很容易。您正在设置WORKDIR
,然后使用相对路径将.jar
复制到该位置,但当您复制其他内容(/src/main/resources/static
)时,您使用的是绝对路径,这将彻底破坏您的文件夹结构(因为这些文件没有复制到您的WORKDIR
)引用的文件夹中。您可能忘记了路径前面的
(点)-/src/main/resources/static
运行
docker exec-it bash
访问正在运行的容器并查看复制的内容如果您不确定,从那时起修复docker文件中的内容应该很容易。我认为您正在混合不同的内容。在jar文件上,您可以轻松地放置所需的资源并从应用程序访问它们(正如您在src/main/resources中所说的).不需要docker修改。你需要从哪里访问这些文件?我完全不同意你的观点。我在自学,关于spring boot的课程很简单地讨论了集装箱化,但不是很好。涵盖了足够的基本知识,让我研究我需要知道的。我认为这就是我的全部目的我自己就是一个jar文件。我认为你在混合不同的东西。在一个jar文件上,你可以轻松地放置你需要的资源,并从你的应用程序中访问它们(正如你在src/main/resources中所说的).不需要docker修改。你需要从哪里访问这些文件?我完全不同意你的观点。我在自学,关于spring boot的课程很简单地讨论了集装箱化,但不是很好。涵盖了足够的基本知识,让我研究我需要知道的。我认为这就是我的全部目的我自己也有一个jar文件。那正是我做错的地方。一个缺失。“谢谢你不能相信我看错了。那正是我做错的地方。一个缺失。”“谢谢你不能相信我看错了。”。