java应用运行在docker,并且其他组件也在docker
docker启动redis容器
# create redis
docker run -d --name redis-container -p 6379:6379 redis:latest
创建java 应用
dockerfile
FROM openjdk:17##Pre-create related directories
RUN mkdir -p /data/etax/ms-app
WORKDIR /data/etax/ms-appEXPOSE 10133
COPY ./target/fe-msv-ntp-ms3-1.0.0-SNAPSHOT.jar /data/etax/ms-app/app.jar
ENTRYPOINT ["java","-jar","app.jar"]
构建命令
# docker build
docker build -t test-docker:v3 ./# app
docker run -d --name test-docker-app -p 10133:10133 test-docker:v3
SpringBoot 项目搭建
启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class AppApplication {public static void main(String[] args) {SpringApplication.run(AppApplication.class, args);}
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>3.1.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>fe-msv-ntp-ms3</artifactId><version>1.0.0-SNAPSHOT</version><properties><java.version>17</java.version><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><start-class>ird.ntp.fe.msv.AppApplication</start-class><maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version><maven-spring-boot-plugin.version>3.0.4</maven-spring-boot-plugin.version><maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version><maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${maven-surefire-plugin.version}</version></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${maven-spring-boot-plugin.version}</version><configuration><mainClass>org.example.AppApplication</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins><resources><resource><!-- 指定配置文件的位置 --><directory>src/main/resources</directory><includes><!-- 读取resources下的所有文件,include表示指定文件内的,相对的还有excludes ,排除其下的文件 --><include>**/*</include></includes><!-- 开启替换标签,比如我们的'@env'就是通过这个替换的 --><filtering>true</filtering></resource></resources></build></project>
yaml
spring:application:name: fe-msv-ntp-ms3-app
# Redis连接配置redis:host: 10.130.6.126port: 6379
# password:# profiles:
# active: local
server:port: 10133
其他测试类
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;@Configuration
public class RedisConfig {@Value("${spring.redis.host}")String host;@Value("${spring.redis.port}")String port;@Beanpublic RedisConnectionFactory redisConnectionFactory() {// 创建 Redis 连接工厂System.out.println("创建 Redis 连接工厂");LettuceConnectionFactory factory = new LettuceConnectionFactory();factory.setHostName(host);factory.setPort(Integer.parseInt(port));return factory;}@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {// 创建 RedisTemplate 对象RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(connectionFactory);return template;}}import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {@AutowiredRedisTemplate<String, Object> redisTemplate;@GetMapping("/success")public String success() {return "success";}@GetMapping("/setValue")public void setValue(String key, String value) {redisTemplate.opsForValue().set(key, value);System.out.println("key=" + key + "value=" + value);}@GetMapping("/getValue")public String getValue(String key) {return (String) redisTemplate.opsForValue().get(key);}}
相关文章:
java应用运行在docker,并且其他组件也在docker
docker启动redis容器 # create redis docker run -d --name redis-container -p 6379:6379 redis:latest创建java 应用 dockerfile FROM openjdk:17##Pre-create related directories RUN mkdir -p /data/etax/ms-app WORKDIR /data/etax/ms-appEXPOSE 10133 COPY ./target…...
Java真实面试题,offer已到手
关于学习 在黑马程序员刚刚开始的时候学习尽头非常足,到后面逐渐失去了一些兴趣,以至于后面上课会出现走神等问题,但是毕业时后悔晚矣。等到开始学习项目一的时候,思路总会比别人慢一些,不看讲义写不出来代码。 建议…...
在序列化、反序列化下如何保持单例(Singleton)模式
1、序列化、反序列化 在 Java 中,当一个对象被序列化后再被反序列化,通常情况下会创建一个新的对象实例。这是因为序列化将对象的状态保存到字节流中,而反序列化则是将字节流重新转化为对象。在这个过程中,通常会使用类的构造函数…...
【数据结构】二叉树篇|超清晰图解和详解:二叉树的最近公共祖先
博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页: 是瑶瑶子啦每日一言🌼: 你不能要求一片海洋,没有风暴,那不是海洋,是泥塘——毕淑敏 目录 一、题目二、题解三、代码 一、题目 …...
android ndk clang交叉编译ffmpeg动态库踩坑
1.ffmpeg默认使用gcc编译,在android上无法使用,否则各种报错,所以要用ndk的clang编译 2.下载ffmpeg源码 修改configure文件,增加命令 cross_prefix_clang 修改以下命令 cc_default"${cross_prefix}${cc_default}" cxx…...
简单记录牛客top101算法题(初级题C语言实现)BM24 二叉树的中序遍历 BM28 二叉树的最大深度 BM29 二叉树中和为某一值的路径
1. BM24 二叉树的中序/后续遍历 要求:给定一个二叉树的根节点root,返回它的中序遍历结果。 输入:{1,2,#,#,3} 返回值:[2,3,1]1.1 自己的整体思路(与二叉树的前序遍…...
前后端分离------后端创建笔记(05)用户列表查询接口(上)
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...
性能测试|App性能测试需要关注的指标
一、Android客户端性能测试常见指标: 1、内存 2、CPU 3、流量 4、电量 5、启动速度 6、滑动速度、界面切换速度 7、与服务器交互的网络速度 二、预期标准指定原则 1、分析竞争对手的产品,所有指标要强于竞品 2、产品经理给出的预期性能指标数据…...
Termux SFTP 进行远程文件传输
文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP(SSH File Transfer Protocol)是一种基于SSH(Secure Shell)安全协议的文件传输协议。与FTP协议相比,SFTP使用了…...
Sqlite3简介
SQLite3 简介 SQLite3 是一种轻量级的嵌入式数据库引擎,被广泛应用于各种应用程序中,包括移动设备、桌面应用程序和嵌入式系统。它以其简单、高效和零配置的特点而受到开发者的喜爱。 以下是 SQLite3 的一些重要特点: 嵌入式数据库引擎&…...
K8S调度
K8S调度 一、List-Watch 机制 controller-manager、scheduler、kubelet 通过 List-Watch 机制监听 apiserver 发出的事件,apiserver 通过 List-Watch 机制监听 etcd 发出的事件1.scheduler 的调度策略 预选策略/预算策略:通过调度算法过滤掉不满足条件…...
vue+element多层表单校验prop和rules
核心点:外层循环是item和index,内层循环是item2和index2 如果都是定义的同一个属性名 外层循环得写:prop"block.index.numerical" 同理内层循环就得写:prop"objectSpecs. index2 .numerical" 校验函数方法 :rules"getRules(it…...
Dubbo 核心概念和架构
以上是 Dubbo 的工作原理图,从抽象架构上分为两层:服务治理抽象控制面 和 Dubbo 数据面 。 服务治理控制面。服务治理控制面不是特指如注册中心类的单个具体组件,而是对 Dubbo 治理体系的抽象表达。控制面包含协调服务发现的注册中心、流量管…...
【数据结构OJ题】反转链表
原题链接:https://leetcode.cn/problems/reverse-linked-list/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 方法一:三指针翻转法 使用三个结构体指针n1,n2,n3,原地修改结点…...
Java8 Stream 之groupingBy 分组讲解
本文主要讲解:Java 8 Stream之Collectors.groupingBy()分组示例 Collectors.groupingBy() 分组之常见用法 功能代码: /** * 使用java8 stream groupingBy操作,按城市分组list */ public void groupingByCity() { Map<String, List<Em…...
优哲SSD大文件写性能测试
SDD磁盘性能测试: 空盘: 大文件读,写,读写(4/6)性能测试,删除性能测试,N进程,N线程 小文件读,写,读写(4/6)性能测试&am…...
Python基础教程: json序列化详细用法介绍
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 Python内置的json模块提供了非常完善的对象到JSON格式的转换。 废话不多说,我们先看看如何把Python对象变成一个JSON: d dict(nameKaven, age17, sexMale) print(json.dumps(d)) # {"na…...
一张图看懂 USDT三种类型地址 Omni、ERC20、TRC20的区别
USDT是当前实用最广泛,市值最高的稳定币,它是中心化的公司Tether发行的。在今年的4月17日之前,市场上存在着2种不同类型的USDT。4月17日又多了一种波场TRC20协议发行的USDT,它们各自有什么区别呢?哪个转账最快到账?哪…...
SegFormer之模型训练
单卡训练,所有配置文件里的【SyncBN】改为【BN】 启动训练 (1)终端直接运行 python tools/train.py local_configs/segformer/B1/segformer.b1.512x512.ade.160k.py (2)在编辑器中运行 在 [config] 前面加上’–‘将…...
Azure资源命名和标记决策指南
参考 azure创建虚拟机在虚拟机中选择编辑标签,并添加标记,点击应用 3.到主页中转到所有资源 4. 添加筛选器并应用 5.查看结果,筛选根据给服务器定义的标签筛选出结果。 参考链接: https://learn.microsoft.com/zh-cn/azure/cloud-adoption…...
文墨共鸣大模型与Matlab科学计算结合:数据报告自动化
文墨共鸣大模型与Matlab科学计算结合:数据报告自动化 每次做完仿真和数据分析,看着满屏的图表和密密麻麻的数据矩阵,你是不是也头疼怎么写报告?从数据到文字,这中间仿佛隔着一道鸿沟,既要组织语言…...
仅剩127天!Python 3.14+原生AOT将成标准解释器默认后端:企业级迁移路线图与兼容性断点预警
第一章:Python 原生 AOT 编译方案 2026 生产环境部署全景概览Python 原生 AOT(Ahead-of-Time)编译在 2026 年已进入成熟商用阶段,核心由 CPython 官方主导的 cpython-aot 工具链与 PEP 718 所定义的字节码预优化规范共同支撑。该方…...
SenseVoice Small模型可解释性:注意力权重可视化与关键语音片段定位
SenseVoice Small模型可解释性:注意力权重可视化与关键语音片段定位 1. 项目背景与意义 语音识别技术在日常生活中的应用越来越广泛,从智能助手到会议转录,从语音输入到多媒体内容处理,都离不开高效准确的语音转文字服务。Sense…...
上海计算机学会2026年2月月赛C++丙组T1 乘积的秘密
乘积的秘密 题目描述 给定两个整数 A 与 B,保证 A ≤ B。请求出从 A 一直乘到 B 的符号: 如果乘积大于 0,输出 Positive;如果乘积小于 0,输出 Negative;如果乘积等于 0,输出 Zero。 输入格式 两…...
DeepSeek-OCR-2保姆级部署教程:5分钟在星图GPU平台一键搭建OCR服务
DeepSeek-OCR-2保姆级部署教程:5分钟在星图GPU平台一键搭建OCR服务 1. 为什么你需要这个OCR服务 如果你经常需要处理扫描文档、发票、合同或者各种纸质材料的数字化,肯定遇到过传统OCR工具的痛点——表格识别混乱、多栏文本顺序错乱、公式识别一塌糊涂…...
告别环境配置噩梦:手把手教你用OpenVINO 2024.4 + VS2019部署PyTorch图像分类模型(附完整代码)
从PyTorch到生产环境:OpenVINO 2024.4全链路部署实战指南 当你的PyTorch模型在实验环境中表现优异,如何将它无缝迁移到实际应用场景?本文将带你跨越从研究到生产的鸿沟,使用Intel OpenVINO工具包2024.4版本,在Visual S…...
港科喜讯|[港科百创]参赛项目上市!视觉语言大模型第一股诞生!
2026年3 月 30 日,山东极视角科技股份有限公司(股票代码:6636.HK)在香港联合交易所主板正式上市。这家曾斩获香港科技大学第六届百万奖金国际创业大赛深圳赛区一等奖的科创企业,同时也是香港科大"创科行"(第…...
Dash.js终极指南:5分钟掌握专业级流媒体播放技术
Dash.js终极指南:5分钟掌握专业级流媒体播放技术 【免费下载链接】dash.js A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers. 项目地址: https://gitcode.com/gh_mirrors/da/dash.js Dash.js是一个…...
OpenClaw安全指南:千问3.5-27B本地化执行权限管控
OpenClaw安全指南:千问3.5-27B本地化执行权限管控 1. 为什么需要OpenClaw安全管控? 去年冬天的一个深夜,我被一阵急促的键盘敲击声惊醒。走进书房时,发现OpenClaw正在自动执行我三天前测试的爬虫脚本——由于没有设置运行时间限…...
intv_ai_mk11 GPU部署教程:A10显卡下intv_ai_mk11服务健康检查脚本编写与自动化监控
intv_ai_mk11 GPU部署教程:A10显卡下intv_ai_mk11服务健康检查脚本编写与自动化监控 1. 环境准备与快速部署 在开始编写健康检查脚本之前,我们需要确保intv_ai_mk11服务已经正确部署在A10显卡服务器上。以下是快速部署步骤: 系统要求&#…...
