讓Spring跑在Docker容器中吧 === **本教學預設你已經成功安裝SendHoLi所需的套件並成功運行他** [sendHoLi][1] [1]: https://github.com/loserrain/sendHoLi/tree/main ## 1.打開CMD移動到你的專案資料夾  ___ ## 2.在專案資料夾用**mvn package**指令打包成jar檔  ___ ## 3.尋找打包後的jar檔並進行測試 檔案位子在專案資料夾的target底下  用以下指令測試是否運行成功 spring-boot-upload-files-0.0.1-SNAPSHOT.jar為target底下的jar檔名 ```cmd java -jar target/spring-boot-upload-files-0.0.1-SNAPSHOT.jar ```  之後進入http://127.0.0.1:8080/ 應該可以看到頁面 ___ ## 4.建立Dockfile 在Docker的世界裡,有Dockerfile就可以對應一個可以執行的環境(Image),而Dockerfile就是建置Docker Image的腳本... 首先在main底下創一個docker資料夾 並創建Dockerfile以及把jar檔複製進去  ### Dockerfile ```dockerfile FROM openjdk:17-jdk-alpine VOLUME /tmp COPY spring-boot-upload-files-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] ``` ___ ## 5.Bulid Docker Image cd到docker資料夾底下,並運行底下指令 ``` docker build -t myorg/myapp . ```  這條Docker命令的意義如下: docker build: 這是用於建立Docker映像檔的命令。 -t myorg/myapp: 這部分指定了建立的映像檔的名稱和標籤。在這個例子中,映像檔的名稱是myorg/myapp。myorg是組織或使用者的名稱,myapp是應用程式的名稱。這樣的命名方式符合Docker映像檔的命名慣例,能夠清晰地識別映像檔的用途和擁有者。 .: 這部分表示Docker應該在當前目錄(通常是Dockerfile所在的目錄)中尋找Dockerfile檔案。Dockerfile包含了建立映像檔所需的指令和配置。 總結來說,這條命令告訴Docker根據當前目錄中的Dockerfile來建立一個映像檔,並且給這個映像檔設定名稱和標籤為myorg/myapp。 ___ ## 6.Run Docker Image 請修改以下指令的IP後運行他(改成127.0.0.1也行) ```bash docker run -p 140.130.33.150:80:8080 myorg/myapp ```  這條Docker命令的意義如下: docker run: 這是用於運行Docker容器的命令。 -p 140.130.33.150:80:8080: 這部分指定了容器的端口映射。意思是將主機的140.130.33.150 IP位址的80端口映射到容器內的8080端口。這樣,當主機的80端口被訪問時,流量將被轉發到運行在容器內的應用程式,並且由容器內的8080端口接收。 myorg/myapp: 這部分指定了運行的Docker映像檔。在這個例子中,使用的是myorg/myapp這個映像檔。 總結來說,這條命令告訴Docker運行一個名為myorg/myapp的映像檔,並且將主機的80端口映射到運行在容器內的8080端口。這樣,外部訪問主機的80端口時,將被轉發到容器內的應用程式。 ## 7.測試 以下指令為測試網站是否能正常上傳檔案 但要注意上傳測試檔的路徑以及網站的網址是否正確 ``` curl -X POST -F "file=@C:\Users\felix\Downloads\01010201.pdf" http://140.130.33.150/uploa ``` 這條`curl`命令的意義如下: - `curl`: 是一個命令行工具,用於向目標URL發送HTTP請求,並且可以用來顯示和下載網頁數據。 - `-X POST`: 這部分指定了HTTP請求的方法為POST,表示要向目標URL發送一個POST請求。 - `-F "file=@C:\Users\felix\Downloads\01010201.pdf"`: 這部分使用了`-F`選項,指定要上傳的文件。`file=@C:\Users\felix\Downloads\01010201.pdf` 表示要上傳的文件是位於 `C:\Users\felix\Downloads\` 目錄下,名稱為 `01010201.pdf` 的文件。`@` 符號表示要上傳一個文件。 - `http://140.130.33.150/upload`: 這是目標URL,表示POST請求將被發送到 `http://140.130.33.150/upload` 這個網址。 總結來說,這條`curl`命令的作用是向 `http://140.130.33.150/upload` 發送一個POST請求,同時上傳了一個名為 `01010201.pdf` 的文件,該文件位於 `C:\Users\felix\Downloads\` 目錄下。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up