Windows VMWare Centos Docker部署Springboot應用

接上篇文章:Windows VMWare Centos環境下安裝Docker并配置MySql-CSDN博客文章瀏覽閱讀370次,點贊3次,收藏4次。Windows VMWare Centos環境下安裝Docker并配置MySql https://blog.csdn.net/u013224722/article/details/148928081

?一、新建Springboot應用

環境:Win10?+ IDEA2023.1.3

Project創建后,在/resources/static目錄下新建welcome.html文件。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Welcome</title>
</head>
<body>
<h1>Hi!</h1>
<p>Welcome default Page !</p>
</body>
</html>

新建 controller文件夾,在controller文件夾下,新建BaseController.java文件,并添加用于測試的相關接口。

package com.duelapi.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.*;@Controller
@RequestMapping("/")
public class BaseController {@RequestMapping(value = "/", method = RequestMethod.GET)public String welcome(){return "welcome.html";}@RequestMapping(value = "/getWelcomeInfo", method = RequestMethod.GET)@ResponseBodypublic String getWelcomeInfo() {return "Hello World!";}@RequestMapping(value = "/getInfo", method = RequestMethod.GET)@ResponseBodypublic Map<String, Object> getInfo() {Map<String, Object> resultMap = new HashMap<>();resultMap.put("Date", new Date());resultMap.put("Version", "v1.0.0");resultMap.put("Intro", "Create Springboot Project and running on Centos Docker!");return resultMap;}
}

編譯并運行 ,Debug-Console日志中看到啟動了Tomcat,默認端口為8080,打開瀏覽器,輸入接口進行測試。

返回html、String、Json均測試成功。

二、配置本地Tomcat Server

? ? ? ? 個人研發習慣使用本地的Tomcat 進行測試,測試報錯

?

三、解決Local Tomcat Server發布成功、訪問404報錯

1、安裝openjdk 24

下載openjdk:https://download.java.net/java/GA/jdk24.0.1/24a58e0e276943138bf3e963e6291ac2/9/GPL/openjdk-24.0.1_windows-x64_bin.zip

在環境變量中重新配置 JAVA_HOME 指向 openJDK 24,配置完后驗證下,如圖:

2、升級Apache Tomcat到10+

下載 apache-tomcat-10.1.42.exe?

https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.42/bin/apache-tomcat-10.1.42.exe

下載完后安裝。

3、IDEA修改啟動配置

配置為新安裝的新版本Tomcat

4、啟動成功后驗證

5、解決Tomcat? Localhost Log日志亂碼

找到新安裝的Tomcat 10目錄,打開logging.properties文件

修改這些為GBK

重新啟動后中文不再亂碼

四、Springboot打包后在 VMWare Centos Docker中發布

1、Widnows宿主機中springboot應用打包為jar文件

修改【packageing】輸出模式為 jar

修改application.properties文件

指定server端口為8093,不修改的話,在Docker中啟動時,默認會映射到8080端口,會成功啟動,但是若啟動容器指令配置為8093端口,瀏覽器會無法正常加載。通過Terminal查看時顯示如下:

配置server.ip為0.0.0.0

右側 Marven面板分別執行 clean? 和 package指令。

打包輸出目錄如下。

2、Windows 宿主機安裝配置 Nginx

? ?從Windows宿主機向VMware Centos中復制文件,經常出問題,不愿意費時間解決,選擇了在Windows宿主機中安裝Nginx,用Nginx傳遞文件。

? ? Nginx中添加了如下配置:

	server{listen 35869;server_name localhost;location / {root E:\wqproject;index index.html;}location ~* \.(html|css|js|png|jpg|jpeg|gif|ico|mp4|mp3|mkv|rmvb|flv|eot|svg|ttf|woff|woff2|pptx|rar|swf|xml|jar)$ {root E:\wqproject;autoindex on;}}

在Nginx配置指定的目錄下,放了一個html用于測試連接,然后把打包好的jar文件扔到該目錄下:

? ? ? ?在VMWare Centos的Firefox瀏覽器測試連接 Windows宿主機配置的Nginx,成功訪問到了測試文件welcome.html.

??在VMWare Centos的Firefox瀏覽器地址欄直接輸入jar包地址,進行下載,借助Nginx實現文件在宿主機和VMWare Centos系統之間的文件拷貝。

?3、VMWare Centos Docker中安裝Jar文件

? 新建了一個文件夾,把jar拷貝進來后,新建了一個Dockerfile文件。

#Dockerfile 內容FROM openjdk:24# 后端工作目錄
VOLUME /app# 后端jar包名稱
COPY dapi-0.0.1.jar /app/dapi.jar# 后端項目的端口號
EXPOSE 8093#啟動時指令
ENTRYPOINT ["java", "-jar", "/app/dapi.jar"]

?Terminal進入新建的workspace文件夾后執行安裝命令:

?執行Build指令安裝Image遇到報錯:

?$ sudo docker build -f Dockerfile -t dapi:v1.0.0 .
[+] Building 5.6s (2/2) FINISHED ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? docker:default
?=> [internal] load build definition from Dockerfile ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0.0s
?=> => transferring dockerfile: 312B ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0.0s
?=> WARN: ConsistentInstructionCasing: Command 'copy' should match the case of the command majority ?0.0s
?=> ERROR [internal] load metadata for docker.io/library/openjdk:24 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5.5s
------
?> [internal] load metadata for docker.io/library/openjdk:24:
------

解決報錯,單獨安裝下 openjdk:24?

// 拉取openjdk
sudo docker pull openjdk:24

?繼續執行安裝命令并啟動容器

#執行Image安裝$ sudo docker build -t dapi:1.0.0 .#啟動容器并映射端口$ sudo docker run --name dapi -p 8093:8093 -d dapi:1.0.0 --restart=always

?安裝完后,在VMWare Centos中打開Firefox瀏覽器,測試成功。

五、失敗的嘗試及解決方法

5.1 菜單欄Build按鈕構建Jar,出錯

????????通過Project Structure添加打包為Jar的配置,并通過菜單欄的Build相關按鈕打包

? ? ?將上述方式打包的jar在 Docker中安裝后,通過指令 【docker ps -a】查看,容器的端口沒有映射。

輸入指令:$ sudo? docker logs dapi 查看日志,報

Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/Filter的錯誤

回到Windows宿主機,檢查源代碼,發現有對 Jakarta包的引用。

import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.filter.OncePerRequestFilter;


?結論:使用菜單欄Build的方式打包的jar對依賴環境、依賴包打包并不完善,推薦本文章的四章節Marven方式打包。

5.2 Docker 刪除Image失敗?

$ sudo docker rmi dapi

Error response from daemon: No such image: dapi:latest

$ sudo docker rmi dapi:latest

Error response from daemon: No such image: dapi:latest

推薦的卸載方式:

// 1、停止容器$ sudo docker stop dapi// 2、強制性移除已停止的容器  
// 不強制移除,  docker ps 指令不會顯示,  docke ps -a 仍然會顯示已停止的容器,且造成刪除Image包出錯。$ sudo docker container prune// 3、移除Image包$ sudo docker rmi dapi:1.0.0

?5.3 Docker刪除Image失敗其他解決方法:

? ? ? ? 使用系統管理員權限進入目錄:/var/lib/docker/image/overlay2/imagedb/content/sha256 執行 ls命令,羅列了所有容器的 sha256字符串,該字符串與Image ID開頭一致,推測Image ID即Image ID,嘗試刪除成功。

// 使用系統管理員權限
$ sudo suroot@localhost: cd /var/lib/docker/image/overlay2/imagedb/content/sha256# 
root@localhost:/var/lib/docker/image/overlay2/imagedb/content/sha256# ls// Terminal輸出
2362924ff4dabaf3f2e1f84c401569b8c0fe3808761ba6f26505da0c02f0a1ab  
98455b9624a96e32b353297bb312913b6bbd62ac195cea2c7dd477209ba572d6
97de1ab340a2dfe2cf043cb959218996546fec9e4ae04ae89925eafc8ae78046// 97de1ab340a2dfe2cf043cb959218996546fec9e4ae04ae89925eafc8ae78046 這個sha256字符串與
// images列表呈現的 【Image ID】開頭一致$ sudo docker images
//  REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
//  dapi         v1.0.0    97de1ab340a2   24 minutes ago   614MB
//  openjdk      24        2362924ff4da   4 months ago     597MB
//  mysql        5.7.25    98455b9624a9   6 years ago      372MB// 嘗試根據刪除Image的 sha256 值刪除 image
$ sudo docker rmi 97de1ab340a2dfe2cf043cb959218996546fec9e4ae04ae89925eafc8ae78046// Terminal輸出
Untagged: dapi:v1.0.0
Deleted: sha256:97de1ab340a2dfe2cf043cb959218996546fec9e4ae04ae89925eafc8ae78046// 再次查詢images列表
$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
openjdk      24        2362924ff4da   4 months ago   597MB
mysql        5.7.25    98455b9624a9   6 years ago    372MB刪除成功

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912434.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912434.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912434.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaEE-Spring事務和事務的傳播機制

事務 什么是事務 事務是?組操作的集合, 是?個不可分割的操作. 事務會把所有的操作作為?個整體, ?起向數據庫提交或者是撤銷操作請求. 所以這組操作要么同時成功, 要么同時失敗. 為什么需要事務? 事務的操作 Spring 中事務的實現 創建好數據庫后就是配置數據庫相關的配…

共享經濟視域下社群經濟的本質重構:基于開源AI智能名片鏈動2+1模式S2B2C商城小程序源碼的實證研究

摘要&#xff1a;社群經濟在互聯網時代呈現爆發式增長&#xff0c;但傳統社群運營存在情感維系成本高、商業轉化路徑長、技術賦能不足等痛點。本文以共享經濟理論為框架&#xff0c;結合開源AI智能名片鏈動21模式S2B2C商城小程序源碼的技術實踐&#xff0c;提出“思想-資源-機會…

測試方法的分類

靜態測試 核心分類依據&#xff1a;根據是否執行程序分為靜態測試和動態測試 靜態測試方法 執行特征&#xff1a;不運行被測程序&#xff0c;通過人工檢查或工具分析進行測試 測試對象&#xff1a;主要針對文檔&#xff08;包括需求文檔、設計文檔等&#xff09;和源代碼 實…

查看CPU支持的指令集和特性

1&#xff09;gcc -c -Q -marchnative --helptarget 2&#xff09;結果 The following options are target specific: -m128bit-long-double [enabled] -m16 [disabled] -m32 [disabled…

【大模型應用開發】Unity結合大模型實現智能問答功能

零、最終效果 Unity結合大模型實現智能問答功能 一、文本自動換行效果 新建一個Text文本&#xff0c;設置文本的最大寬度 然后添加Content Size Fitter組件&#xff0c;Vertical Fit選擇Preferred Size 二、背景隨文本長度變化效果 新建一個Image作為文本的背景&#xff0…

Python爬蟲-爬取汽車之家全部汽車品牌及車型數據

前言 本文是該專欄的第64篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文,筆者將基于汽車之家平臺,通過Python獲取全部的“汽車品牌以及車型”數據。 廢話不多說,具體實現思路和詳細邏輯,筆者將在正文結合完整代碼進行詳細介紹。接下來,跟著筆者直接往下看正文詳…

簽名組件:uniapp 簽名組件開發,兼容小程序、H5、App等 電子簽名

描述 H5&#xff1a;1. 模擬橫屏。2. 提示信息、模擬態也通過模擬橫屏顯示 小程序&#xff1a;1. 自動橫屏展示 APP&#xff1a;1. 自動橫屏展示 rn-signature 個性簽名組件 組件名 rn-signature 簽名組件兼容H5、APP、小程序。橫屏簽名效果。 效果展示 h5端 小程序端 APP 端…

第10.4篇 使用預訓練的目標檢測網絡

在PyTorch提供的已經訓練好的圖像目標檢測中&#xff0c;均是R-CNN系列 的網絡&#xff0c;并且針對目標檢測和人體關鍵點檢測分別提供了容易調用的方 法。針對目標檢測的網絡&#xff0c;輸入圖像均要求使用相同的預處理方式&#xff0c;即先將每張圖像的像素值預處理到0~1之…

基于開源鏈動2+1模式AI智能名片S2B2C商城小程序源碼的運營機制沉淀與規范構建研究

摘要&#xff1a;在數字化商業生態中&#xff0c;運營機制的沉淀與規范構建是企業實現可持續增長的核心命題。本文以開源鏈動21模式、AI智能名片、S2B2C商城小程序源碼為技術基座&#xff0c;提出“機制設計-數據沉淀-規范生成-迭代優化”的四階閉環模型。通過某健康食品品牌的…

js代碼05

題目 好的&#xff0c;我們進入異步編程的“終極形態”&#xff1a;async/await。 async/await 是在 ES2017 (ES8) 中引入的&#xff0c;它并不是一個全新的功能&#xff0c;而是建立在 Promise 之上的語法糖 (Syntactic Sugar)。它的目標是讓我們能夠以一種看似同步、更符合…

PyTorch里.pt和.pth的區別

在PyTorch中&#xff0c;.pt和.pth文件均用于保存模型&#xff0c;但兩者在設計初衷、存儲內容和使用場景上存在差異。以下是詳細對比&#xff1a; 1. 核心區別 特性.pt文件.pth文件存儲內容完整模型&#xff08;結構參數優化器狀態等&#xff09;僅模型參數&#xff08;state…

windows電腦如何安裝iis作為部署服務器并

1.控制面板-程序-啟用或關閉windows功能-勾選iis(縮寫) 2.安裝好iis后在開始中搜索iis就可以看見安裝好了的管理器了

解鎖ChatGPT高級玩法:模塊化提示詞庫開發指南

目錄 &#x1f50d; 一、引言&#xff1a;為什么需要模塊化提示詞庫&#xff1f;&#x1f9f1; 二、模塊化提示詞庫設計原理2.1 核心架構2.2 模塊功能說明 ?? 三、模塊化提示詞庫開發實踐&#xff08;附Python源碼&#xff09;3.1 環境配置3.2 模塊化提示詞生成器3.3 提示詞組…

Spring Boot 實現不同用戶不同訪問權限

前提 近期在使用 Spring Boot&#xff0c;用戶角色被分為管理者和普通用戶&#xff1b;角色不同&#xff0c;權限也就存在不同。 在 Spring Boot 里實現不同用戶擁有不同訪問權限&#xff0c;可借助 Spring Security 框架達成。 實現 1. 添加必要依賴 首先要在 pom.xml 里…

華沿協作機器人:數字孿生技術賦能焊接領域智能化升級

在工業4.0與智能制造浪潮的推動下&#xff0c;焊接行業正經歷從傳統工藝向數字化、柔性化轉型的關鍵階段。作為國內協作機器人領域的創新者&#xff0c;華沿機器人通過融合數字孿生、智能感知與多軸協同技術&#xff0c;在焊接場景中實現了技術突破與應用創新。本文將從技術原理…

Linux中部署Nacos保姆級教程

前置說明&#xff1a; Dokcer部署Nacos官方文檔&#xff1a;Nacos Docker 快速開始 | Nacos 官網 一、Nacos版本說明 Nacos 1.x 版本 Nacos 1.1.3 &#xff1a;是一個相對穩定的版本&#xff0c;在一段時期內被廣泛使用&#xff0c;但目前該版本已經下線&#xff0c;不再單獨維…

戰神授權后臺報錯:Parse error: syntax error, unexpected end of file in解決辦法

問題現象分析 當您在戰神授權后臺遇到"Parse error: syntax error, unexpected end of file"這個錯誤時&#xff0c;說明PHP解析器在解析腳本文件時遇到了意外結束的情況。這種錯誤通常發生在PHP代碼結構不完整時&#xff0c;比如缺少閉合的大括號、分號或者PHP結束…

HTML<span>元素詳解

HTML<span>元素詳解 <span> 是 HTML 中最常用的內聯(inline)容器元素&#xff0c;用于對文檔中的部分文本或內容進行標記和樣式化。 一、基本語法 <span>內容</span>二、主要特點 內聯元素&#xff1a;不會獨占一行&#xff0c;只占據內容所需寬度無…

vscode ssh遠程連接到Linux并實現免密碼登錄

vscode ssh遠程連接到Linux并實現免密碼登錄 文章目錄 vscode ssh遠程連接到Linux并實現免密碼登錄一、安裝VSCode擴展二、Linux側工作三、連接四、實現免密登錄 一、安裝VSCode擴展 擴展一欄搜索remote找到Remote Development插件直接點擊Install安裝即可 二、Linux側工作 U…

超級詳細 的 Apache Camel 教程

前言 通過本教程學習 Apache Camel 的基礎知識并在 Spring Boot 項目上創建您的第一個 Camel。 想開始使用Apache Camel嗎&#xff1f;這是我關于這個流行的 Java 集成框架的教程。 我為完整的初學者編寫了這個 Apache Camel 教程。它向您介紹了 Camel 的核心概念&#xff0c;并…