当前位置: 首页 > news >正文

利用Docker部署一个简单的springboot项目

文章目录

      • 1、首先利用docker部署一个redis中间件
        • 1.1、下载redis镜像
        • 1.2、在主机创建redis挂载的目录和文件
        • 1.3、部署redis中间件
      • 2、创建springboot项目
        • 2.1、修改application.yml
        • 2.2、编写controller
        • 2.3、启动应用并测试访问
      • 3、将应用打包成镜像
        • 3.1、编写Dockerfile
        • 3.2、上传文件到服务器
        • 3.3、制作java应用镜像
      • 4、启动容器
      • 5、访问测试
      • 6、镜像应用分享与启动
        • 6.1、推送到阿里云个人镜像仓库
        • 6.2、新的主机拉取镜像并启动容器

1、首先利用docker部署一个redis中间件

这里注意两个问题:
挂载两个redis文件

  1. redis的配置文件 redis.conf
  2. 挂载redis的数据目录

在这里插入图片描述

1.1、下载redis镜像
docker pull redis

在这里插入图片描述

1.2、在主机创建redis挂载的目录和文件
mkdir /root/data/redis

在这里插入图片描述
创建redis.conf,里面的内容为:

appendonly yesrequirepass ABC@123
1.3、部署redis中间件

部署一个Redis+应用,尝试应用操作Redis产生数据

##运行redis镜像
docker run -v /root/data/redis/redis.conf:/etc/redis/redis.conf \
-v /root/data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest  redis-server /etc/redis/redis.conf

redis使用自定义位置的配置文件启动命令。

redis启动成功
在这里插入图片描述
使用redis桌面连接工具redisdestopmanager测试连接docker启动的redis应用:
注意这边要记住放行安全组中的6379端口!!!!
在这里插入图片描述

连接成功!!!
在这里插入图片描述

2、创建springboot项目

使用下面的方式创建一个简单的springboot项目:
https://start.spring.io/
在这里插入图片描述
使用idea打开下载的项目,删除无用文件和文件夹,等待下载所需依赖。
在这里插入图片描述

2.1、修改application.yml
spring:data:redis:host: xx.xx.xx.xxport: 6379password: ABC@123
2.2、编写controller
/*** @Author tigerhhzz* @Date 2024 02 20 10 48* 统计访问页面的人数**/
@RestController
public class CounterController {@AutowiredStringRedisTemplate redisTemplate;@GetMapping("/hello")public String count(){Long increment = redisTemplate.opsForValue().increment("count-person");return "有【"+ increment +"】人访问了这个页面";}
}

在这里插入图片描述

2.3、启动应用并测试访问

在这里插入图片描述
查看redis的count-person的值的变化:
在这里插入图片描述

3、将应用打包成镜像

编写Dockerfile将自己的应用打包镜像

所有机器都安装Docker,任何应用都是镜像,所有机器都可以运行。

3.1、编写Dockerfile
FROM openjdk:17-jdk-alpine
LABEL maintainer=tigerhhzzCOPY target/*.jar   /app.jarENTRYPOINT ["java","-jar","/app.jar"]

在这里插入图片描述

3.2、上传文件到服务器

上传的文件为jar包和Dockerfile文件

在这里插入图片描述
利用xshell工具上传文件
在这里插入图片描述

3.3、制作java应用镜像
docker build -t java-demo:v1.0 .

在这里插入图片描述

镜像制作完成,查看java-demo镜像:
在这里插入图片描述

4、启动容器

启动应用容器

docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

启动成功:
在这里插入图片描述

5、访问测试

在这里插入图片描述

6、镜像应用分享与启动

6.1、推送到阿里云个人镜像仓库
##登录阿里云Docker Registry
docker login --username=aliyun2164344789 registry.cn-zhangjiakou.aliyuncs.com##打标签
docker tag 596b1bd9b839 registry.cn-zhangjiakou.aliyuncs.com/tiger-aliyun-namespace/tigerhhzz-java-demo:v1.0##推送镜像
docker push registry.cn-zhangjiakou.aliyuncs.com/tiger-aliyun-namespace/tigerhhzz-java-demo:v1.0

在这里插入图片描述
镜像推送成功
在这里插入图片描述

6.2、新的主机拉取镜像并启动容器
docker pull registry.cn-zhangjiakou.aliyuncs.com/tiger-aliyun-namespace/tigerhhzz-java-demo:v1.0

查看镜像

docker images

在这里插入图片描述

运行镜像

docker run -d -p 8080:8080 --name tigerhhzz-java-app registry.cn-zhangjiakou.aliyuncs.com/tiger-aliyun-namespace/tigerhhzz-java-demo:v1.0 

访问测试
在这里插入图片描述
两台机子并发访问
在这里插入图片描述

相关文章:

利用Docker部署一个简单的springboot项目

文章目录 1、首先利用docker部署一个redis中间件1.1、下载redis镜像1.2、在主机创建redis挂载的目录和文件1.3、部署redis中间件 2、创建springboot项目2.1、修改application.yml2.2、编写controller2.3、启动应用并测试访问 3、将应用打包成镜像3.1、编写Dockerfile3.2、上传文…...

【Java】纯小白的三种工厂模式基础知识学习笔记

工厂模式概念 在Java中,工厂模式是一种设计模式,用于创建对象而无需指定明确的类。工厂模式通过定义一个共同的接口或抽象类来创建对象,然后由工厂类根据特定条件或参数来实例化具体的对象。 工厂模式通常包括三种类型:简单工厂…...

Spring Boot 笔记 006 创建接口_注册

1.1 由于返回数据都是以下这种格式,那么久再编写一个result实体类 报错了,原因是没有构造方法 可以使用lombok的注解自动生成,添加无参的构造器和全参的构造器 package com.geji.pojo;import lombok.AllArgsConstructor; import lombok.NoArg…...

沁恒CH32V30X学习笔记08---基本定时器超时功能

TIM 基本定时器 高级定时器模块包含一个功能强大的 16 位自动重装定时器(TIM1、TIM8、TIM9 和 TIM10) 通用定时器模块包含一个 16 位可自动重装的定时器(TIM2、TIM3、TIM4 和 TIM5) 基本定时器模块包含一个 16 位可自动重装的定时器(TIM6 和 TIM7) 定时器的结构大致可…...

GitHub | 在 GitHub 上在线展示 Vue 项目

简洁版&#xff1a;上传所有代码 << 构建项目并上传 dist 目录 << 设置仓库 << 访问 Step1&#xff1a;在 GitHub 上新建仓库&#xff0c;并将 Vue 项目的代码 push 到该仓库中。坑点在于&#xff0c;如果你是从 GitHub 上 clone 的别人的项目&#xff0c;那…...

Android的Compose

Jetpack Compose 是用于构建原生 Android 界面的新工具包&#xff0c;无需修改任何 XML 布局&#xff0c;也不需要使用布局编辑器。相反&#xff0c;只需调用可组合函数来定义所需的元素&#xff0c;Compose 编译器即会完成后面的所有工作。 简而言之&#xff0c;使用Compose&…...

C++ STL->list模拟实现

theme: smartblue list list文档 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一个元素…...

基于python+django+vue.js开发的健身房管理系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 功能包括&#xff1a;教练管理、会员管理、场地管理、设备管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeeeek/python_…...

GPT-4对编程开发的支持

在编程开发领域&#xff0c;GPT-4凭借其强大的自然语言理解和代码生成能力&#xff0c;能够深刻理解开发者的意图&#xff0c;并基于这些需求提供精准的编程指导和解决方案。对于开发者来说&#xff0c;GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…...

“成像光谱遥感技术中的AI革命:ChatGPT应用指南“

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用&#xff0c;人工智…...

12.25 校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | 百度2024校园招聘持续热招中 校招 | 百度2024校园招聘持续热招中 2、校招 | 毫末智行2024秋招补录进行时 校招 | 毫末智行2024秋招补录进行时 3、实习丨蔚来2024届冬季实习生计…...

深度学习基础之《TensorFlow框架(3)—TensorBoard》

一、TensorBoard可视化学习 1、TensorFlow有一个亮点就是&#xff0c;我们能看到自己写的程序的可视化效果&#xff0c;这个功能就是TensorBoard 2、TensorFlow可用于训练大规模深度神经网络所需的计算&#xff0c;使用该工具涉及的计算往往复杂而深奥。为了方便TensorFlow程…...

杨氏矩阵和杨辉三角

杨氏矩阵 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N); 分析 若要满足要求时间复杂度小于O(N)&#xff0c;就不能每一行一个个…...

PostgreSQL教程(四):高级特性

一、简介 在之前的章节里我们已经涉及了使用SQL在PostgreSQL中存储和访问数据的基础知识。现在我们将要讨论SQL中一些更高级的特性&#xff0c;这些特性有助于简化管理和防止数据丢失或损坏。最后&#xff0c;我们还将介绍一些PostgreSQL扩展。 本章有时将引用教程&#xff0…...

168基于matlab的六自由度并联摇摆台的反解控制算法

基于matlab的六自由度并联摇摆台的反解控制算法&#xff0c;stewart平台&#xff0c;配有GUI界面&#xff0c;可以自定义角度&#xff0c;杆长等参数。设定动平台位姿即能得到电机参数。程序已调通&#xff0c;可直接运行。 168 六自由度并联摇摆台 反解控制算法 (xiaohongshu.…...

MDC 日志跟踪笔记

一、前言 本文主要解析应用中比较实在的一个log4j的链路应用&#xff0c;在经过一段时间的应用后发现还是很稳的&#xff0c;就记录一下这个MDC 代表Mapped Diagnostic Context&#xff08;映射式诊断上下文&#xff09;的情况。 Tisp: 它是一个线程安全的存放诊断日志的容器 T…...

MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案

项目场景 有时候&#xff0c;遇到数据库重复数据&#xff0c;需要将数据进行分组&#xff0c;并取出其中一条来展示&#xff0c;这时就需要用到group by语句。 但是&#xff0c;如果mysql是高版本&#xff0c;当执行group by时&#xff0c;select的字段不属于group by的字段的…...

人工智能|机器学习——基于机器学习的舌苔检测

代码下载&#xff1a; 基于深度学习的舌苔检测毕设留档.zip资源-CSDN文库 1 研究背景 1.1.研究背景与意义 目前随着人们生活水平的不断提高&#xff0c;对于中医主张的理念越来越认可&#xff0c;对中医的需求也越来越多。在诊断中&#xff0c;中医通过观察人的舌头的舌质、苔…...

SQL查询转化为 Elasticsearch 查询

使用SQL 转化为查询 Elasticsearch 支持 sql 语句转化为 elasticsearch 的 查询语句 第一步&#xff1a; 打开在线转换工具的网页&#xff0c;进入工具页面 第二步&#xff1a;在指定的输入框中输入需要转换的 sql 语句。 您学会了这么简单的办法...

目标检测教程视频指南大全

魔鬼面具-哔哩哔哩视频指南 必看干货系列(建议搞深度学习的小伙伴都看看,特别是图像相关) 深度学习常见实验问题与实验技巧(适用于所有模型&#xff0c;小白初学者必看!)还在迷茫深度学习中的改进实验应该从哪里开始改起的同学&#xff0c;一定要进来看看了&#xff01;用自身…...

51单片机(一) --- 入门

一、核心基础概念铺垫 在接触 51 单片机实操前&#xff0c;先理清 CPU、处理器架构、位运算等基础概念&#xff0c;这是理解单片机工作原理的核心前提。 1.1 CPU 与处理器主频 CPU&#xff08;Central Processing Unit&#xff09; 即中央处理器&#xff0c;是所有计算设备的…...

跳点搜索算法(JPS)融合动态窗口法,JPS规划全局路径,动态窗口法执行动态避障

跳点搜索算法&#xff08;JPS&#xff09;融合动态窗口法&#xff0c;JPS规划全局路径&#xff0c;动态窗口法执行动态避障最近在搞机器人路径规划&#xff0c;总得在效率和安全之间找平衡。今天聊点实战的——把跳点搜索&#xff08;JPS&#xff09;和动态窗口法&#xff08;D…...

Vivado DDS IP核的‘光栅化’模式详解:告别相位噪声,提升信号纯度的秘密

Vivado DDS IP核的‘光栅化’模式深度解析&#xff1a;高纯度信号生成的工程实践 在FPGA数字信号处理领域&#xff0c;直接数字频率合成&#xff08;DDS&#xff09;技术因其频率分辨率高、切换速度快等优势&#xff0c;已成为雷达系统、通信设备和测试仪器中的核心模块。Xilin…...

Kevin喜欢零(困难版本)【牛客tracker 每日一题】

Kevin喜欢零(困难版本) 时间限制&#xff1a;1秒 空间限制&#xff1a;256M 网页链接 牛客tracker 牛客tracker & 每日一题&#xff0c;完成每日打卡&#xff0c;即可获得牛币。获得相应数量的牛币&#xff0c;能在【牛币兑换中心】&#xff0c;换取相应奖品&#xff0…...

4步高效实现OneNote Markdown导出:从迁移到深度应用指南

4步高效实现OneNote Markdown导出&#xff1a;从迁移到深度应用指南 【免费下载链接】onenote-md-exporter ConsoleApp to export OneNote notebooks to Markdown formats 项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter 当你需要将多年积累的OneNot…...

网络排障实战:当ping命令不好使时,如何用Wireshark抓包分析ICMP协议找出真凶?

网络排障实战&#xff1a;当ping命令失效时&#xff0c;如何用Wireshark解码ICMP协议故障 当你面对一台无法ping通的目标主机时&#xff0c;"请求超时"的提示就像一堵没有门的墙——它告诉你无法通行&#xff0c;却不会解释原因。作为运维工程师&#xff0c;我曾遇到…...

如何用QtScrcpy突破手机操控局限?三大创新方案让多场景效率提升300%

如何用QtScrcpy突破手机操控局限&#xff1f;三大创新方案让多场景效率提升300% 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy 手机屏幕太小导致操作失误&#xff1f;多设备管理切…...

【深度学习OFDM信号处理】Deep-Waveform:基于复值神经网络的端到端OFDM接收机设计与实现【附MATLAB/Python代码】

1. 为什么需要深度学习处理OFDM信号&#xff1f; 传统OFDM接收机依赖离散傅里叶变换&#xff08;DFT&#xff09;进行时频域转换&#xff0c;这种固定算法在面对复杂无线环境时存在明显局限。我在实际项目中遇到过这样的情况&#xff1a;当信道出现严重多径衰落时&#xff0c;传…...

SAP PP顾问必看:手把手教你用增强PPCO0001实现CO02工单变更记录(附完整ABAP代码)

SAP PP顾问实战&#xff1a;深度解析PPCO0001增强实现CO02工单变更审计 在制造业SAP实施项目中&#xff0c;生产工单的变更追踪一直是合规审计的重点难点。当用户通过CO02事务码修改工单时&#xff0c;标准系统提供的变更记录功能存在明显局限——既无法满足精细审计需求&…...

从ItemCF到Swing:手把手教你用Python实现小红书式协同过滤召回(附代码避坑)

从ItemCF到Swing&#xff1a;Python实战小红书式协同过滤召回系统 在内容社区和电商平台的推荐系统中&#xff0c;协同过滤算法始终占据着核心地位。不同于深度学习推荐模型对海量数据和算力的依赖&#xff0c;基于物品和用户的协同过滤方法以其直观的可解释性和稳定的效果&…...