docker一键部署若依前后端分离版本
比如这里把文件放到/xin/docker/jiaoZ/的目录下,jar包和下面的配置文件都放在这个文件夹下。
注意要把jar端口改为你实际启动的,映射端口也可以改为你想要的。
这里的映射端口为:nginx监听80端口,jar在8620端口,mysql在3306端口,redis在6379端口。
Dockerfile
如果这里不安装字体,若依登录时的验证码会显示不出来!
# 使用适合Oracle JDK 8的基础镜像
FROM openjdk:8-jdk# 安装字体
RUN apt-get update && apt-get install -y \fontconfig \fonts-dejavu \xfonts-100dpi \&& rm -rf /var/lib/apt/lists/*# 确保/app目录存在
RUN mkdir -p /app# 添加jar包到容器
ADD wms-productV3.0.jar /app/wms-productV3.0.jar# 设置工作目录
WORKDIR /app# 设置环境变量,如有需要
# ENV ...# 开放8620端口
EXPOSE 8620# 运行jar包
CMD ["java", "-jar", "wms-productV3.0.jar"]
docker-compose.yml
version: '3.8' # 指定 Docker Compose 文件版本services: # 定义应用程序由哪些服务组成mysql: # MySQL 数据库服务image: mysql:8 # MySQL 服务使用的 Docker 镜像environment: # 传递给容器的环境变量MYSQL_ROOT_PASSWORD: root # 设置 MySQL 的 root 密码MYSQL_DATABASE: jung_wms # 创建名为 jung_wms 的数据库command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password # MySQL 服务器配置volumes: # 将主机路径或命名卷挂载到容器中- ./mysql:/var/lib/mysql # 将 MySQL 数据持久化到主机目录- ./mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql:ro # 使用 SQL 脚本初始化数据库- ./my.cnf:/etc/mysql/conf.d/custom.cnf:ro # 自定义 MySQL 配置文件ports:- "3306:3306" # 在主机上公开 MySQL 的 3306 端口redis: # Redis 服务image: redis # Redis 服务使用的 Docker 镜像volumes:- ./redis:/data # 将 Redis 数据持久化到主机目录ports:- "6379:6379" # 在主机上公开 Redis 的 6379 端口nginx: # Nginx 网络服务器服务image: nginx # Nginx 服务使用的 Docker 镜像volumes:- ./nginx:/etc/nginx/conf.d # 将主机的 nginx 配置目录映射到容器中- ./app.conf:/etc/nginx/conf.d/app.conf:ro # 特定的 Nginx 应用配置文件- /xin/docker/jiaoZ/dist:/usr/share/nginx/html # 将主机的前端文件映射到 Nginx 容器中ports:- "80:80" # 在主机上公开 Nginx 的 80 端口app: # 应用服务build: # 构建 Docker 镜像的配置context: . # Docker 构建上下文目录dockerfile: Dockerfile # Dockerfile 文件名volumes:- ./app:/app # 应用源代码卷- ./wms-productV3.0.jar:/app/wms-productV3.0.jar:ro # 特定的应用 JAR 文件ports:- "8620:8620" # 在主机上公开应用的 8620 端口depends_on: # 指定服务之间的依赖关系- mysql- redis
app.conf
server {listen 80;location / {root /usr/share/nginx/html;index index.html index.htm;try_files $uri $uri/ /index.html;}location /ars/ { # 确保这里有结束的斜杠proxy_pass http://app:8620/; # 这会将匹配到的/ars/替换为这里的斜杠/proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}
my.cnf
关闭lmysql区分表名大小写。
[mysqld]
lower_case_table_names=1
mysql-init.sql
初始化的sql,比如这里创建jung_wms数据库
CREATE DATABASE IF NOT EXISTS jung_wms;
启动程序
docker-compose up --build
发现启动后,因为app.jar启动的慢,nginx启动的快,所以nginx访问app时就访问不到,异常退出了,所以等jar包启动之后,手动启动一下nginx就可以了,下面是命令。
新开一个窗口运行下面命令,名称改为你nginx的。
docker restart jiaoz-nginx-1
完。
相关文章:

docker一键部署若依前后端分离版本
比如这里把文件放到/xin/docker/jiaoZ/的目录下,jar包和下面的配置文件都放在这个文件夹下。 注意要把jar端口改为你实际启动的,映射端口也可以改为你想要的。 这里的映射端口为:nginx监听80端口,jar在8620端口,mysq…...
Java项目开发之fastjson详解
Fastjson 是由阿里巴巴公司开发的一个 Java 语言编写的高性能 JSON 处理库。它主要用于 Java 对象与 JSON 数据格式之间的转换,提供了简单易用的 API 来实现序列化(Java 对象转 JSON 字符串)和反序列化(JSON 字符串转 Java 对象&a…...

面试算法-62-盛最多水的容器
题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。…...

【智能算法】海洋捕食者算法(MPA)原理及实现
目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年,Afshin Faramarzi 等人受到海洋生物适者生存启发,提出了海洋捕食者算法(Marine Predators Algorithm,MPA)。 2.算法原理 2.1算法思想 MPA根据模拟自然界…...

刷题DAY24 | LeetCode 77-组合
1 回溯法理论基础 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。 所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数。 1.1 回溯法的效率 回溯法的性能如何呢࿰…...
Spring Boot为什么默认使用CGLIB动态代理
兼容性: 1. CGLIB 动态代理可以代理任何类型的目标类,无论它是否实现了接口;[注意的是,类被 final 修饰,那么该不可被继承,即不可被代理;同样,类中 final 修饰的方法&am…...

算法详解——Dijkstra算法
Dijkstra算法的目的是寻找单起点最短路径,其策略是贪心加非负加权队列 一、单起点最短路径问题 单起点最短路径问题:给定一个加权连通图中的特定起点,目标是找出从该起点到图中所有其他顶点的最短路径集合。需要明确的是,这里关心…...
利用GANs进行图像生成
生成对抗网络(GANs)是一种深度学习模型,由两部分组成:生成器(Generator)和判别器(Discriminator)。它们通过相互竞争来提高生成器生成高质量图像的能力。以下是如何利用GANs进行图像…...

Flutter-底部弹出框(Widget层级)
需求 支持底部弹出对话框。支持手势滑动关闭。支持在widget中嵌入引用。支持底部弹出框弹出后不影响其他操作。支持弹出框中内容固定头部和下面列表时,支持触摸头部并在列表不在头部的时候支持滑动关闭 简述 通过上面的需求可知,就是在界面中可以支持…...

聚焦两会:数字化再加速,VR全景助力制造业转型
近年来,随着信息技术、人工智能、VR虚拟现实等新兴技术的不断涌现,数字化正日益成为推动当今经济发展的新驱动力。在不久前的两会上,数字化经济和创新技术再度成为热门话题: 国务院总理李强作政府工作报告: 要深入推…...

数据挖掘之关联规则
“啤酒和尿布的荣誉” 概念 项 item:单个的事物个体 ,I{i1,i2…im}是所有项的集合,|I|m是项的总数项集(item set)/模式(pattern):项的集合,包含k个项的项集称为k-项集数据集(data set)/数据库…...
java:java.util.BitSet对象的Jackson序列化和反序列化实现
java.util.BitSet是个非常方便的比特位数据存储和操作类,一个 bit 具有2个值:0和1,正好可以用来表示 false 和 true,适用于判断“数据是否存在”的场景。 但是,这个从JDK1.0版本就存在的类,Jackson,Fastjso…...
Go语言学习01-基本程序结构
文章目录 Go语言学习01-基本程序结构基本程序结构应用程序入口退出返回值编写测试程序快速设置连续值基本数据类型类型的预定义值指针类型运算符算数运算符比较运算符用 比较数组 逻辑运算符位运算符&^ 按位 置零 Go语言学习01-基本程序结构 基本程序结构 package main …...

rundeck k8s部署踩坑
1、镜像启动后原来的定时任务无法运行 参考: https://github.com/rundeck/rundeck/issues/4275 https://stackoverflow.com/questions/60942785/env-variable-for-rundeck-feature-joblifecycleplugin-enabled/60959605#60959605 结论: (1&…...
每天学习几道面试题|Kafka(二)架构设计类
文章目录 1. Kafka 是如何保证高可用性和容错性的?2. Kafka 的存储机制是怎样的?它是如何处理大量数据的?3. Kafka 如何处理消费者的消费速率低于生产者的生产速率?4. Kafka 集群中的 Controller 是什么?它的作用是什么…...
Spring 实现 OAuth2 授权之解决方案
Spring Security OAuth2 - 已经废弃的项目 早期的Spring 使用 Spring Security OAuth2 实现 OAuth 2.0 的认证服务器和资源服务器。OAuth2是一个授权框架,它允许第三方应用获取有限的访问权限,而无需获取用户的账号和密码等敏感信息。通过这种方式,OAuth2协议实现了安全的用…...

el-select使用filterable下拉无法关闭得问题
这里推荐一个前端框架 sakuya / SCUI,他里面有个formTable,可以解决很多订单明细保存得问题。基本沿用element-plus的前端使用模式,让表单表格变的非常容易。 这个的供应商插件,当使用filterable后,点击表格重的选项&…...

基于javaweb(springboot)城市地名地址信息管理系统设计和实现
基于javaweb(springboot)城市地名地址信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…...

vue iframe实现父页面实时调用子页面方法和内容
父页面标签添加鼠标按下事件 父页方法中建立iframe通信 实时调用子页面方法 实时更改子页面文本内容...

HarmonyOS ArkTS 开发基础/语言
目录 一、ArkUI (方舟开发框架) 概述 1.1 基本概念 1.2 两种开发范式 1.3 不同应用类型支持的开发范式 二、ArkTS 声明式开发范式 2.1 开发能力 2.2 整体架构 三、ArkTS 基础类型 3.1 Any 类型 3.2 数字类型 3.3 字符串类型 3.4 布尔类型 3.5 联合类型 3.6 数组类…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...