当前位置: 首页 > 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;用自身…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...