Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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
Amazon web services 如何在AWS上托管的docker容器中使用spring boot加载静态文件?_Amazon Web Services_Spring Boot_Docker_Static Files - Fatal编程技术网

Amazon web services 如何在AWS上托管的docker容器中使用spring boot加载静态文件?

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 -

我让我的SpringBoot应用程序在docker容器中运行,docker容器由Dockerfile构建,托管在AWS ubuntu实例上。 除了我有一个图像、一个css文件和一个不加载的js文件之外,所有的东西都工作得很好。检查页面时,这些文件显示404未找到错误。 我已使用winscp将文件上载到aws实例。在myApp文件夹中,我的docker文件所在的位置以及我构建容器的位置

目录结构为:

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文件。那正是我做错的地方。一个缺失。“谢谢你不能相信我看错了。那正是我做错的地方。一个缺失。”“谢谢你不能相信我看错了。”。