windows版docker部署springcloud项目
材料:
1.windows版docker环境(其他版教程可能道理一样但是比如文件后坠名上可能有差异)
2.运行好的数据库容器(实现教程)
3.所有jar包
实现:
最后整好的文件夹结构图(原工程文件机密,可以找我寻求帮助,但是需要一点点小心意):
4个文件夹分别是装有4个微服务jar包
Dockerfile文件是docker运行命令的环境配置说明文件(根据需要修改)
start.sh文件帮助我们起jar包的脚本(根据需要修改,就是用来起所有jar包的,在Dockerfile中进行了引用)
说明书内容如下:
要执行 Dockerfile 中的指令并构建镜像,您可以按照以下步骤进行操作:确保您已经在 Docker 客户端环境中,并在终端中进入 Dockerfile 所在的目录。使用以下命令来构建镜像,其中 image_name:tag 是您为镜像指定的名称和标签,可以根据需要自行修改:docker build -t springcloud:0.0.1 .
注意,命令末尾的 . 表示 Dockerfile 在当前目录中。等待 Docker 构建镜像,这可能需要一些时间,取决于您的系统性能以及镜像的大小。构建完成后,您可以使用以下命令查看已构建的镜像列表:docker images
您应该能够在列表中看到刚刚构建的镜像,其中包含指定的名称和标签。接下来,您可以运行该镜像创建并启动容器。例如,可以使用以下命令运行镜像:启动时必须映射端口docker run -d --name springcloudimg -p 3888:3888 -p 3801:3801 -p 3802:3802 -p 3343:3343 springcloud:0.0.1二、start.sh的换行符要换成\n在 Notepad++ 中修改换行符的方法如下:打开要编辑的文件。
在菜单栏中选择 "编辑" > "文档格式转换"。
在弹出的子菜单中,选择适当的行结束符选项,如 "Windows (CRLF)"、"Unix (LF)" 或 "Macintosh (CR)",取决于您想要设置的换行符类型。
单击菜单栏上的 "编辑",然后选择 "EOL转换"。
在子菜单中选择你想要的换行符选项。
保存文件。
完成上述步骤后,文件中的换行符将被更新为您选择的类型。请注意在保存文件时进行备份,以防止意外的数据丢失。
三、容器之间的网络访问的url查看方法(以mysql为例)
docker inspect 容器名
根据提供的信息,这是Docker容器的网络配置。以下是对每个字段的解释:Networks:表示容器所连接的网络列表。
bridge:网络名称,这是默认的Docker网桥网络。
IPAMConfig:IP地址管理配置,这里为null,表示不使用特定的IP地址管理配置。
Links:链接其他容器的配置,这里为null,表示没有链接到其他容器。
Aliases:网络别名列表,这里为null,表示没有指定网络别名。
NetworkID:网络的唯一标识符。
EndpointID:容器在网络中的唯一标识符。
Gateway:网络的网关IP地址。
IPAddress:容器在网络中分配的IP地址。
IPPrefixLen:IP地址前缀长度,这里为16。
IPv6Gateway:IPv6的网关地址。
GlobalIPv6Address:全局IPv6地址。
GlobalIPv6PrefixLen:全局IPv6地址前缀长度。
MacAddress:容器的MAC地址。
DriverOpts:驱动选项,这里为null,表示没有指定驱动选项。
通过提供的信息,可以看出容器的IP地址为172.17.0.2,网关地址为172.17.0.1。这些信息可以用于容器之间的通信或进行网络配置。
这是查看容器中信息的命令,找到其中的Gateway或IPAddress(这俩其中一个肯定有一个行),再 加上 启动容器时映射出去的的端口,就组成了容器访问另一个容器的url地址
步骤一:
先形成一个在宿主机上运行的一个java项目部署环境(就是不用docker部署时的部署环境)
例如:

步骤二:
添加Dockerfile文件没有后缀名
# 指定基础镜像为 JDK 11(这里替换为你的jdk版本)
FROM openjdk:11# 设置工作目录(不用改)
WORKDIR /app# 将所有的 包含JAR 文件的文件夹复制到镜像中的 /app/springcloud 目录下(这里根据你的一个jar包的路径排版进行调整替换,添加)
COPY EurekaServer /app/springcloud/EurekaServer
COPY GateWayService /app/springcloud/GateWayService
COPY MechanicalCalculationService /app/springcloud/MechanicalCalculationService
COPY UserService /app/springcloud/UserService
# 将 start.sh文件复制到docker中的/app/springcloud中(这个start.sh必须有)
COPY start.sh /app/springcloud/start.sh# 设置启动脚本可执行权限(确保路径一致)
RUN chmod 777 /app/springcloud/start.sh# 暴露应用程序的端口(这些是我用到的端口,改为你的)
EXPOSE 3343
EXPOSE 3888
EXPOSE 3802
EXPOSE 3801#执行命令(这里用到了start.sh,切记要将换行符改为/n,否则会报错,使用nodepad++改)
ENTRYPOINT ["bash","/app/springcloud/start.sh"]
步骤三:
建立start.sh脚本(切记使用nodepad++,调整换行符,这个文件就是帮我们起项目用的自己看不解释了):
#!/bin/bash# 定义文件夹列表
FOLDERS=("EurekaServer" "UserService" "MechanicalCalculationService" "GateWayService")# 修改线程数目,以适应 Docker 容器的性能限制
THREADS=4# 循环遍历文件夹列表,进入每个文件夹并运行对应的 JAR 包
for folder in "${FOLDERS[@]}"; docd "/app/springcloud/$folder"jar=$(find . -maxdepth 1 -type f -name "*.jar")echo "$jar开始启动"java -jar "$jar" &# 等待直到该 JAR 包成功启动或失败退出sleep 30# 检查退出状态码,如果不为0,则表示启动失败if [ $? -ne 0 ]; thenecho "$jar启动失败"exit 1elseecho " $jar没问题启动完毕"fi
done# 无限循环,以保持容器运行状态(没有这里容器会自动关闭)
while true; dosleep 1
done
完结
按照说明书执行语法就行了,就连接数据库时会报错,只要你找对ip+端口就可以解决了
一定要有网没网的话先要构建一个离线的jdk:11镜像
docker save -o和docker load -i是Docker命令,用于将Docker镜像保存到文件和加载镜像文件到Docker中。下面我会解释这两个命令的作用和用法。docker save -o命令:
docker save -o <output_file.tar> <image_name:tag>
这个命令用于将指定的Docker镜像保存到一个输出文件中。<output_file.tar>是你希望保存镜像的文件路径和名称,例如my_image.tar。<image_name:tag>是要保存的Docker镜像的名称和标签,例如ubuntu:latest。例如:docker save -o my_image.tar ubuntu:latestdocker load -i命令:
docker load -i <input_file.tar>
这个命令用于从一个输入文件中加载Docker镜像到Docker中。<input_file.tar>是包含要加载的镜像的文件路径和名称,例如my_image.tar。例如:docker load -i my_image.tar使用这两个命令可以方便地将Docker镜像导出到文件并在其他机器或环境中加载。请注意,在使用docker load -i命令加载镜像之前,确保在目标机器上已经安装了Docker,并且有足够的权限来加载镜像。
相关文章:
windows版docker部署springcloud项目
材料: 1.windows版docker环境(其他版教程可能道理一样但是比如文件后坠名上可能有差异) 2.运行好的数据库容器(实现教程) 3.所有jar包 实现: 最后整好的文件夹结构图(原工程文件机密…...
探索工程机械远程控制新纪元:Intewell-Hyper II震撼发布!
在当前的工程技术领域,远程控制技术以其卓越的效率和方便性,正受到越来越多的关注和运用。而在这个过程中,某机械集团以Intewell-HyperII操作系统为基础,打造出了具有前瞻性的工程机械远程控制器,为行业的发展提供了新…...
DM8 DSC集群实时主备搭建
1、环境准备 主库DSC集群公网ip:192.168.1.34/35 私有ip:192.168.10.134/135 备库ip:192.168.1.33 2、对DSC集群数据库全备 1)主库做全备 [dmdbadmdsc01 bin]$ disql sysdba/dameng123 BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSE…...
配置IPv4 over IPv6隧道示例
IPv4 over IPv6隧道: 在IPv4 Internet向IPv6 Internet过渡后期,IPv6网络被大量部署后,而IPv4网络只是散布在世界各地的一些孤岛。利用隧道技术可以在IPv6网络上创建隧道,从而实现IPv4孤岛的互联,IPv4孤岛能通过IPv6公…...
在中国区部署日志通2.0
前提条件 一个域名:使用此域名来访问日志通控制台提供aws iam 的ssl证书 ,而且必须跟域名相关联具有四个子网(两个公有子网和两个私有子网)和NAT网关的VPC 步骤 1.创建ACM证书 1.1 请求公有证书 1.2 配置域名 1.3 新申请的证书记…...
centos下安装jdk
环境:centos7/openjdk-8u40-b25 openJDK页面 java二进制包下载页面 华为jdk镜像 1.下载安装包后上传到服务器上,运行命令解压到/opt/目录下 tar cxvf server-jre-8u271-linux-x64.tar.gz -C /opt/2.配置环境变量 vi /etc/profile source /etc/profile添加下面的…...
【HDFS】LocatedBlocks、LocatedBlock、LocatedStripedBlock、ExtendedBlock类分析
本文主要介绍如下内容: 1、 介绍标题中类的功能及相关字段 2、 与字段初始化相关的一些细节 一、ExtendedBlock类 在Block Pools之间唯一标识一个块。 直白点就是一个Block再加一个块池id。 块池的概念是HDFS联邦集群之后产生的,因为一台DataNode的主机可以作为多个HDFS集群…...
Oracle 19c 报ORA-704 ORA-01555故障处理---惜分飞
异常断电导致数据库无法启动,尝试对数据文件进行recover操作,报ORA-00283 ORA-00742 ORA-00312错误,由于redo写丢失无法正常应用 D:\check_db>sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 7月 30 07:49:19 2023 Version 19.3.0.0.0 Copyrig…...
D356周赛复盘:滑动窗口+三元问题思路
文章目录 2798.满足目标工作时长的员工数目完整版 2799.统计完全子数组的数目(滑动窗口)思路完整版 2800.包含三个字符的最短字符串(复用思路与三元问题思想)思路复用减少字符串长度的思路为什么一次性操作两个字符串 完整版进一步…...
ETHERNET/IP 转ETHERCAT连接倍福和欧姆龙PLC的配置方法
ETHERNET/IP和ETHERCAT是两种不同的协议,它们在工业生产中都有广泛的应用。然而,由于协议不同,这两种设备之间无法通讯,这给工业生产带来了很大的麻烦。而捷米JM-EIP-ECAT网关应运而生,它能够连接到ETHERNET/IP总线和E…...
Git分布式版本控制工具和GitHub(一)--简介
一.Git概述 1.Git简介 【1】什么是Git? Git就是代码版本管理工具。 【2】为什么要使用Git (1)版本控制 写代码就是不断写BUG的过程(当然我们是不会这么说的),很多时候你写了100行代码之后,突然醒悟&…...
【Terraform学习】Terraform-AWS部署快速入门(快速入门)
Terraform-AWS部署快速入门 实验步骤 连接到 Terraform 环境 SSH 连接到Terraform 环境(名为MyEC2Instance的实例) 在 Amazon Web Services (AWS) 上预置 EC2 实例 用于描述 Terraform 中基础结构的文件集称为 Terraform 配置。您将编写一个配置来定义…...
力扣75——深度优先搜索
总结leetcode75中深度优先搜索的算法题解题思路。 上一篇:力扣75——链表 以下代码部分为本人所写,部分为官方示例代码。 力扣75——深度优先搜索 1 二叉树的最大深度2 叶子相似的树3 统计二叉树中好节点的数目4 路径总和 III5 二叉树中的最长交错路径6 …...
【C++初阶】C++基础(上)——C++关键字、命名空间、C++输入输出、缺省参数、函数重载
目录 1. C关键字 2. 命名空间 2.1 命名空间的定义 2.2 命名空间的使用 3. C输入&输出 4. 缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 5. 函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理——名字修饰(name Mingling) 5.3 extern &…...
代码随想录训练营Day55动态规划part15|392.判断子序列|115.不同的子序列
392.判断子序列 编辑距离问题目前能够很简单的做出来,注意两个细节 s为空,直接输出true在break时,j不会再,因此在break前要手动 Carl用了二维数组,dp[i][j] 由dp[i-1][j-1]1dp[i][j-1]递推 115.不同的子序列 dp[i][…...
Linux下安装RabbitMQ教程
官方安装指南:https://www.rabbitmq.com/install-rpm.html 我们将要安装的RabbitMQ的版本是3.8.2 el/7/rabbitmq-server-3.8.2-1.el7.noarch.rpm - rabbitmq/rabbitmq-server packagecloud 不需要单独安装Erlang环境。 2. 环境配置: 前提ÿ…...
如何加强Mysql安全,请给出可行的具体措施
如何加强Mysql安全,请给出可行的具体措施 数据库对于公司而言是一个非常重要的资产。它在数据存储和管理、业务应用支持、决策和分析、数据安全和合规性、业务连续性以及客户关系管理等方面都发挥着关键作用。因此,公司应该高度重视数据库的建设、管理和…...
创造自己的宠物医院预约服务小程序,步骤详解
在现代社会,越来越多的人开始养宠物,而宠物的健康管理也成为了一个重要的话题。为了方便宠物主人随时随地进行宠物医院的管理和服务,开发一个宠物医院管理小程序是很有必要的。今天我们将分享一些制作宠物医院管理小程序的技巧,帮…...
MACOM EDI 需求分析
MACOM 是一家全球性半导体公司,专注于设计和制造高性能射频、微波和光电元件,其产品被广泛应用于通信、航空航天、国防、工业和医疗等领域。随着 MACOM 的不断发展,传统数据传输方式效率较低,无法满足 MACOM 的需求。为了提高企业…...
使用Spring Boot AOP实现日志记录
目录 介绍 1.1 什么是AOP 1.2 AOP体系与概念 AOP简单实现 2.1 新建一个SpringBoot项目,无需选择依赖 2.2 设置好本地Maven配置后,在pom.xml文件里添加添加maven依赖 2.3 创建一个业务类接口 2.4 在实体类实现接口业务 2.5 在单元测试运行结果 …...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
