Dam*_*mon 5 static-files amazon-web-services docker spring-boot
我的 SpringBoot 应用程序在一个由 Dockerfile 构建并托管在 AWS ubuntu 实例上的 Docker 容器中运行。一切都工作正常,除了我有一个图像、一个 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
Run Code Online (Sandbox Code Playgroud)
我几乎可以肯定我的问题出在 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"]
Run Code Online (Sandbox Code Playgroud)
当我构建容器时,它显示成功复制和构建的所有内容,但未访问文件。对我来说奇怪的是 Spring Boot 正在从静态文件夹中提供正确的模板。我对此完全不知所措。我尝试从 dockerfile 中单独添加资源,但仍然没有成功。
您正在设置WORKDIR,然后.jar使用相对路径复制到该位置,但是当您复制其他内容(/src/main/resources/static)时,您使用的是绝对路径,这完全破坏了您的文件夹结构(因为这些文件不会复制到您的 引用的文件夹中WORKDIR)。您可能忘记了.该路径前面的(点) - ./src/main/resources/static。
运行docker exec -it <image-id> bash以访问正在运行的容器并查看复制的内容,如果您不确定,从那时起修复 Dockerfile 中的内容应该很容易。
| 归档时间: |
|
| 查看次数: |
5168 次 |
| 最近记录: |