簡體   English   中英

如何在 AWS 上托管的 docker 容器內使用 spring 引導加載 static 文件?

[英]How to load static files with spring boot inside a docker container hosted on AWS?

我的 SpringBoot 應用程序在 docker 容器中運行,該容器由 Dockerfile 構建並托管在 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 引導自動在 /src/main/resources/static 中查找 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 引導正在提供 static 文件夾中的正確模板。 我對此完全不知所措。 我嘗試從 dockerfile 單獨添加資源,但仍然沒有運氣。

您正在設置WORKDIR ,然后使用相對路徑將.jar復制到該位置,但是當您復制其他內容( /src/main/resources/static )時,您使用的是完全破壞文件夾結構的絕對路徑(因為這些文件不會復制到您的WORKDIR引用的文件夾中)。 你可能已經忘記了. (點)在該路徑前面 - ./src/main/resources/static

運行docker exec -it <image-id> bash以訪問您正在運行的容器並查看復制的內容,如果您不確定,修復 Z3254677A7917C6C01F55212F86C7 中的內容應該很容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM