windows版docker部署springcloud项目

news/2024/11/18 8:34:24/

材料:

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,并且有足够的权限来加载镜像。

http://www.ppmy.cn/news/988158.html

相关文章

Matlab的SimuLink对FS32K144编程--内部数据存储Flash

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ 前言 Flah擦写是由寿命的&#xff0c;应当减免无效的擦写&#xff0c;如数据值不变不进行擦写 1、新建工程完成后&#xff0c;拖出Flash的存储控制初始化…

Elasticsearch:使用 ELSER 释放语义搜索的力量:Elastic Learned Sparse EncoderR

问题陈述 在信息过载的时代&#xff0c;根据上下文含义和用户意图而不是精确的关键字匹配来查找相关搜索结果已成为一项重大挑战。 传统的搜索引擎通常无法理解用户查询的语义上下文&#xff0c;从而导致相关性较低的结果。 解决方案&#xff1a;ELSER Elastic 通过其检索模型…

Javascript -- 数组prototype方法探究

一、数组prototype方法探究 1、不改变原数组 1. concat() 这个是数组拼接方法&#xff0c;可以将两个数组或多个数组拼接并返回一个包含两个数组或多个数组内容的新数组&#xff0c;不会改变原数组 方法里面理论上可以写入n个参数&#xff0c; const arr [1,2]; var str …

Spring AOP 的概念及其作用

一、什么是 Spring AOP&#xff1f; 在介绍 Spring AOP 之前&#xff0c;首先要了解一下什么是 AOP &#xff1f; AOP &#xff08; Aspect Oriented Programming &#xff09;&#xff1a;面向切面编程&#xff0c;它是一种思想&#xff0c; 它是对某一类事情的集中处 理 。…

SQL server 简介

SQL server 简介 学习目的 SQL Server 是由微软公司开发的一种关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;用于存储和检索数据。它提供了一个可扩展的、安全的和可靠的数据存储和管理解决方案。 SQL Server 主要用于构建企业级应用程序&#xff0c;支持…

软考A计划-系统集成项目管理工程师-项目质量管理-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

网络防御之IDS

1. 什么是IDS&#xff1f; IDS是入侵检测系统&#xff0c;一种对于网络传输进行及时监视&#xff0c;在发现可疑的传输时发出警报或者采取主动反应措施的网络安全设备。IDS是一种积极地主动的防御技术。 2. IDS和防火墙有什么不同&#xff1f; 防火墙是一种隔离并过滤非授权用…

苍穹外卖-day06

苍穹外卖-day06 本项目学自黑马程序员的《苍穹外卖》项目&#xff0c;是瑞吉外卖的Plus版本 功能更多&#xff0c;更加丰富。 结合资料&#xff0c;和自己对学习过程中的一些看法和问题解决情况上传课件笔记 视频&#xff1a;https://www.bilibili.com/video/BV1TP411v7v6/?sp…