gpt4 book ai didi

amazon-web-services - 如何在AWS托管的Docker容器内通过Spring Boot加载静态文件?

转载 作者:行者123 更新时间:2023-12-02 20:55:50 27 4
gpt4 key购买 nike

我让SpringBoot应用程序运行在从Dockerfile构建的Docker容器中,并托管在AWS ubuntu实例上。
一切工作正常,除了我有一个图像,一个css文件和一个无法加载的js文件。检查页面后,这些文件显示404 not found错误。
我已经使用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容器没有此文件结构。
这是我的Dockerfile
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"]
当我构建容器时,它显示了所有复制和构建成功的内容,但是未到达文件。对我来说奇怪的是,Spring Boot正在从静态文件夹中提供正确的模板。我对此完全不知所措。我尝试过从dockerfile分别添加资源,但还是没有运气。

最佳答案

您正在设置WORKDIR,然后使用相对路径将.jar复制到该位置,但是当您复制其他内容(/src/main/resources/static)时,您使用的是绝对路径,它会完全破坏您的文件夹结构(因为这些文件未复制到您所引用的文件夹中WORKDIR)。您可能忘记了该路径前面的.(点)-./src/main/resources/static
运行docker exec -it <image-id> bash以访问正在运行的容器,并在不确定的情况下查看复制的内容,从那时开始,修复Dockerfile中的内容应该很容易。

关于amazon-web-services - 如何在AWS托管的Docker容器内通过Spring Boot加载静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63061943/

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