接上篇文章: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;并…