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

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项目

材料&#xff1a; 1.windows版docker环境&#xff08;其他版教程可能道理一样但是比如文件后坠名上可能有差异&#xff09; 2.运行好的数据库容器&#xff08;实现教程&#xff09; 3.所有jar包 实现&#xff1a; 最后整好的文件夹结构图&#xff08;原工程文件机密&#xf…...

探索工程机械远程控制新纪元:Intewell-Hyper II震撼发布!

在当前的工程技术领域&#xff0c;远程控制技术以其卓越的效率和方便性&#xff0c;正受到越来越多的关注和运用。而在这个过程中&#xff0c;某机械集团以Intewell-HyperII操作系统为基础&#xff0c;打造出了具有前瞻性的工程机械远程控制器&#xff0c;为行业的发展提供了新…...

DM8 DSC集群实时主备搭建

1、环境准备 主库DSC集群公网ip&#xff1a;192.168.1.34/35 私有ip&#xff1a;192.168.10.134/135 备库ip&#xff1a;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隧道&#xff1a; 在IPv4 Internet向IPv6 Internet过渡后期&#xff0c;IPv6网络被大量部署后&#xff0c;而IPv4网络只是散布在世界各地的一些孤岛。利用隧道技术可以在IPv6网络上创建隧道&#xff0c;从而实现IPv4孤岛的互联&#xff0c;IPv4孤岛能通过IPv6公…...

在中国区部署日志通2.0

前提条件 一个域名&#xff1a;使用此域名来访问日志通控制台提供aws iam 的ssl证书 &#xff0c;而且必须跟域名相关联具有四个子网&#xff08;两个公有子网和两个私有子网&#xff09;和NAT网关的VPC 步骤 1.创建ACM证书 1.1 请求公有证书 1.2 配置域名 1.3 新申请的证书记…...

centos下安装jdk

环境:centos7/openjdk-8u40-b25 openJDK页面 java二进制包下载页面 华为jdk镜像 1.下载安装包后上传到服务器上&#xff0c;运行命令解压到/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.统计完全子数组的数目&#xff08;滑动窗口&#xff09;思路完整版 2800.包含三个字符的最短字符串&#xff08;复用思路与三元问题思想&#xff09;思路复用减少字符串长度的思路为什么一次性操作两个字符串 完整版进一步…...

ETHERNET/IP 转ETHERCAT连接倍福和欧姆龙PLC的配置方法

ETHERNET/IP和ETHERCAT是两种不同的协议&#xff0c;它们在工业生产中都有广泛的应用。然而&#xff0c;由于协议不同&#xff0c;这两种设备之间无法通讯&#xff0c;这给工业生产带来了很大的麻烦。而捷米JM-EIP-ECAT网关应运而生&#xff0c;它能够连接到ETHERNET/IP总线和E…...

Git分布式版本控制工具和GitHub(一)--简介

一.Git概述 1.Git简介 【1】什么是Git? Git就是代码版本管理工具。 【2】为什么要使用Git &#xff08;1&#xff09;版本控制 写代码就是不断写BUG的过程&#xff08;当然我们是不会这么说的&#xff09;&#xff0c;很多时候你写了100行代码之后&#xff0c;突然醒悟&…...

【Terraform学习】Terraform-AWS部署快速入门(快速入门)

Terraform-AWS部署快速入门 实验步骤 连接到 Terraform 环境 SSH 连接到Terraform 环境(名为MyEC2Instance的实例) 在 Amazon Web Services &#xff08;AWS&#xff09; 上预置 EC2 实例 用于描述 Terraform 中基础结构的文件集称为 Terraform 配置。您将编写一个配置来定义…...

力扣75——深度优先搜索

总结leetcode75中深度优先搜索的算法题解题思路。 上一篇&#xff1a;力扣75——链表 以下代码部分为本人所写&#xff0c;部分为官方示例代码。 力扣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支持函数重载的原理——名字修饰&#xff08;name Mingling&#xff09; 5.3 extern &…...

代码随想录训练营Day55动态规划part15|392.判断子序列|115.不同的子序列

392.判断子序列 编辑距离问题目前能够很简单的做出来&#xff0c;注意两个细节 s为空&#xff0c;直接输出true在break时&#xff0c;j不会再&#xff0c;因此在break前要手动 Carl用了二维数组&#xff0c;dp[i][j] 由dp[i-1][j-1]1dp[i][j-1]递推 115.不同的子序列 dp[i][…...

Linux下安装RabbitMQ教程

官方安装指南&#xff1a;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. 环境配置&#xff1a; 前提&#xff…...

如何加强Mysql安全,请给出可行的具体措施

如何加强Mysql安全&#xff0c;请给出可行的具体措施 数据库对于公司而言是一个非常重要的资产。它在数据存储和管理、业务应用支持、决策和分析、数据安全和合规性、业务连续性以及客户关系管理等方面都发挥着关键作用。因此&#xff0c;公司应该高度重视数据库的建设、管理和…...

创造自己的宠物医院预约服务小程序,步骤详解

在现代社会&#xff0c;越来越多的人开始养宠物&#xff0c;而宠物的健康管理也成为了一个重要的话题。为了方便宠物主人随时随地进行宠物医院的管理和服务&#xff0c;开发一个宠物医院管理小程序是很有必要的。今天我们将分享一些制作宠物医院管理小程序的技巧&#xff0c;帮…...

MACOM EDI 需求分析

MACOM 是一家全球性半导体公司&#xff0c;专注于设计和制造高性能射频、微波和光电元件&#xff0c;其产品被广泛应用于通信、航空航天、国防、工业和医疗等领域。随着 MACOM 的不断发展&#xff0c;传统数据传输方式效率较低&#xff0c;无法满足 MACOM 的需求。为了提高企业…...

使用Spring Boot AOP实现日志记录

目录 介绍 1.1 什么是AOP 1.2 AOP体系与概念 AOP简单实现 2.1 新建一个SpringBoot项目&#xff0c;无需选择依赖 2.2 设置好本地Maven配置后&#xff0c;在pom.xml文件里添加添加maven依赖 2.3 创建一个业务类接口 2.4 在实体类实现接口业务 2.5 在单元测试运行结果 …...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...