Docker:部署微服务集群

1. 部署微服务集群

实现思路

① 查看课前资料提供的cloud-demo文件夹,里面已经编写好了docker-compose文件

② 修改自己的cloud-demo项目,将数据库、nacos地址都命名为docker-compose中的服务名

③ 使用maven打包工具,将项目中的每个微服务都打包为app.jar

④ 将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中

⑤ 将cloud-demo上传至虚拟机,利用 docker-compose up -d 来部署

1.2. compose文件

查看课前资料提供的cloud-demo文件夹,里面已经编写好了docker-compose文件,而且每个微服务都准备了一个独立的目录:

内容如下:

version: "3.2"services:nacos:image: nacos/nacos-serverenvironment:MODE: standaloneports:- "8848:8848"mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123volumes:- "$PWD/mysql/data:/var/lib/mysql"- "$PWD/mysql/conf:/etc/mysql/conf.d/"userservice:build: ./user-serviceorderservice:build: ./order-servicegateway:build: ./gatewayports:- "10010:10010"

可以看到,其中包含5个service服务:

  • nacos:作为注册中心和配置中心

    • image: nacos/nacos-server: 基于nacos/nacos-server镜像构建

    • environment:环境变量

      • MODE: standalone:单点模式启动

    • ports:端口映射,这里暴露了8848端口

  • mysql:数据库

    • image: mysql:5.7.25:镜像版本是mysql:5.7.25

    • environment:环境变量

      • MYSQL_ROOT_PASSWORD: 123:设置数据库root账户的密码为123

    • volumes:数据卷挂载,这里挂载了mysql的data、conf目录,其中有我提前准备好的数据

  • userserviceorderservicegateway:都是基于Dockerfile临时构建的

查看mysql目录,可以看到其中已经准备好了cloud_order、cloud_user表:

查看微服务目录,可以看到都包含Dockerfile文件:

内容如下:

FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar

1.3. 修改微服务配置

因为微服务将来要部署为docker容器,而容器之间互联不是通过IP地址,而是通过容器名。这里我们将order-service、user-service、gateway服务的mysql、nacos地址都修改为基于容器名的访问。

如下所示:

spring:datasource:url: jdbc:mysql://mysql:3306/cloud_order?useSSL=falseusername: rootpassword: 123driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservicecloud:nacos:server-addr: nacos:8848 # nacos服务地址

将gateway, orderservice, userservice微服务的配置信息中的localhost都改掉,比如数据库配置中的localhost改成mysql  nacos服务地址中的localhost改成 nacos,并且将nacos服务端口要写对!

1.4.打包

接下来需要将我们的每个微服务都打包。因为之前查看到Dockerfile中的jar包名称都是app.jar,因此我们的每个微服务都需要用这个名称。

可以通过修改pom.xml中的打包名称来实现,每个微服务都需要修改:

<build><!-- 服务打包的最终名称 --><finalName>app</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

打包后:

1.5. 拷贝jar包到部署目录

编译打包好的app.jar文件,需要放到Dockerfile的同级目录中。注意:每个微服务的app.jar放到与服务名称对应的目录,别搞错了。

user-service:

order-service:

gateway:

1.6. 部署

最后,我们需要将文件整个cloud-demo文件夹上传到虚拟机中,理由DockerCompose部署。

上传到任意目录:

比如我们上传到tmp目录下:

部署:

进入cloud-demo目录:

cd /tmp/cloud-demo/

先部署nacos,防止nacos部署较慢,其他微服务比nacos先部署,出现报错。

docker-compose up -d nacos

然后运行下面的命令,部署其他东西:

docker-compose up -d

可以用命令查看部署情况:

docker-compose logs -f

想单独看某个项目的部署,比如gateway的:

docker-compose logs -f gateway

部署之后,可以在本地端浏览器查看nacos服务列表:

浏览器地址输入:http://192.168.71.132:8848/nacos  其中,前面的ip可以在虚拟机中使用命令

ip addr

进行查看:

我们进入Nacos的控制台,可以看到:

则部署成功!

测试一下接口是否可以访问,浏览器输入:

ll192.168.71.132:10010/order/101/?authorization=admin

成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Effective C++ 学习笔记 条款17 以独立语句将newed对象置入智能指针

假设我们有个函数用来揭示处理程序的优先权&#xff0c;另一个函数用来在某动态分配所得的Widget上进行某些带有优先权的处理&#xff1a; int priority();void processWidget(std::st1::shared_ptr<Widget> pw, int priority);由于谨记“以对象管理资源”&#xff08;条…

nginx读写锁的实现逻辑

我们一般认为nginx是一个多进程单线程的应用服务&#xff0c;虽然nginx在一个worker进程内是没有数据竞争问题的&#xff08;因为是单线程&#xff09;&#xff0c;但是不免nginx在多个进程间还有一些需要共享的数据&#xff0c;譬如ngx_http_upstream_zone_module模块将peers数…

Pytorch入门实战 P1-实现手写数字识别

目录 一、前期准备&#xff08;环境数据&#xff09; 1、首先查看我们电脑的配置&#xff1b; 2、使用datasets导入MNIST数据集 3、使用dataloader加载数据集 4、数据可视化 二、构建简单的CNN网络 三、训练模型 1、设置超参数 2、编写训练函数 3、编写测试函数 4、…

子事务的应用

子事务的应用 1. 为什么要使用子事务&#xff1f; 为了防止接口执行失败时&#xff0c;导致事务回滚&#xff0c;接口日志记录不到日志表里面&#xff0c;因而将记录日志表的方法写成子事务的方法。 2. 怎么使用子事务&#xff1f; 在方法名后面加上“_RequiresNew”&#xff…

文物藏品信息管理系统的优势

本系统支持一普标准所有管理信息&#xff0c;包括保管信息、基本情况、鉴定信息、考古发掘信息、来源信息、流传经历、损坏记录、移动记录、修复记录、展览信息、著录信息、收藏单位信息等的管理和维护。 能够实现对藏品信息进行动态管理&#xff0c;提供藏品信息管理指标的维护…

《人工智能怎么学》荣获2023年吴文俊人工智能科学技术奖及赠书活动

中国人工智能学会官网&#xff08;www.caai.cn&#xff09;近日正式公布了2023年吴文俊科学技术奖获奖名单&#xff0c;图书《人工智能怎么学》项目被授予2023年吴文俊人工智能科学技术奖科技进步奖&#xff08;科普项目&#xff09;。2023年吴文俊科学技术奖完整获奖名单见htt…

YOLOv8官方仓库更新,添加YOLOv9模型

目录 &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及时查看不迷路&#x1f680;&#x1f680;&#x1f680; 摘要 PGI&GELAN 代码实现 实验结果 消融实验 可视化 结论 &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及时查…

PHP接口代码-在线实名认证-身份实名认证

在我国&#xff0c;身份证是证明身份的证件&#xff0c;我们在生活、工作中都会用到。一般入职一个新公司的时候人事部门的工作人员会让入职人员提供身份证&#xff0c;一是帮员工办理社保等业务和员工档案用&#xff0c;另外还可以用来验证身份。现在科技发达&#xff0c;不仅…

开发充电桩APP提高管理效能

随着社会的发展&#xff0c;电动车已经成为城市交通的重要组成部分&#xff0c;用户所下载的充电类的APP也非常大&#xff0c;而充电桩的建设和利用效率成为了一个亟待解决的问题。在这个背景下&#xff0c;物联网技术的应用成为了提高充电桩效能的关键。虎克技术公司在此领域提…

CyberChef加密解密RSA、AES中文乱码问题有效解决办法

一、AES加密 AES的ECB模式加密&#xff0c;秘钥&#xff1a;1234567812345678 加密效果与utf-8本地加密一致 二、AES解密 AES的ECB模式解密&#xff0c;秘钥&#xff1a;1234567812345678 同理RSA加密设置一样

[C语言]——分支和循环(4)

目录 一.随机数生成 1.rand 2.srand 3.time 4.设置随机数的范围 猜数字游戏实现 写⼀个猜数字游戏 游戏要求&#xff1a; &#xff08;1&#xff09;电脑自动生成1~100的随机数 &#xff08;2&#xff09;玩家猜数字&#xff0c;猜数字的过程中&#xff0c;根据猜测数据的⼤…

【notepad++工具使用之】批量加逗号

背景 在使用sql语句in关键字查询时&#xff0c;我们需要把数据用逗号进行隔开&#xff0c;在数据量非常少的时候&#xff08;十几二十个这样&#xff09;&#xff0c;可以手动的去加逗号分隔符&#xff1b; 但是遇到1000个怎么弄呢&#xff1f; 强大的Notepad 批量处理数据时…

百度智能云发布会定档3月21日,新模型ERNIE Speed已悄然上线

正文 百度智能云官微日前宣布&#xff0c;百度智能云千帆产品发布会&#xff08;AI Cloud Day&#xff09;将于2024年3月21日在北京举行&#xff0c;届时将揭晓千帆ModelBuilder 和 AppBuilder 的最新产品进展&#xff0c;并发布系列新模型及开发工具组件。 记者在百度智能云…

最新的前端开发技术(2024年)

关于作者&#xff1a; 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0…

如何实现数据中心布线变更管理?

前言 随着科技的不断发展&#xff0c;数据中心作为企业的核心基础设施之一&#xff0c;承载着大量重要的业务数据。在数据中心运维过程中&#xff0c;变更管理流程变得尤为重要&#xff0c;它是确保数据中心基础设施稳定运行和保障数据安全的关键环节。变更管理的定义是指在维…

【开源】SpringBoot框架开发快乐贩卖馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 搞笑视频模块2.3 视频收藏模块2.4 视频评分模块2.5 视频交易模块2.6 视频好友模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 搞笑视频表3.2.2 视频收藏表3.2.3 视频评分表3.2.4 视频交易表 四、系…

ue WebUI插件下载官方Github方法

首先要先将EPIC账号绑定Github账号 这个网上有很多教程 我就不细说了 绑定以后点击这个链接 https://github.com/tracerinteractive/UnrealEngine 进去后是这样的 点击这里 下滑找到对应版本下载即可 好了就这样 别被割韭菜了

AI自然语言中默认上下文长度4K 几K是什么意思?

环境&#xff1a; 4K 问题描述&#xff1a; AI自然语言中默认上下文长度4K 几K是什么意思&#xff1f; 解决方案&#xff1a; 在自然语言处理中&#xff0c;“k” 表示 “千”&#xff0c;是一种简写方式。当我们说 “4k” 时&#xff0c;实际上指的是 “4,000”。在上下文…

微服务架构 | 实战常见数据

INFDEX 压测参考值&#xff08;180C&#xff09;线程池Qps/Tps 压测参考值&#xff08;180C&#xff09; 时长TPSTPS极限TP性能TP极限并发CPU负载一般接口5min500200050/100ms120ms1->10/3040%缓存接口5min5000200007/20ms10/25ms1->2/440%一般写接口关键写接口 线程池…

3月6日做题总结(C/C++真题)

星光不负赶路人&#xff0c;时光不负追梦人&#xff01;多一份努力&#xff0c;多一份成功的机会&#xff01; 第一题 int a, b, x, i; a 3; b 4; i 3; x a > b ? i : i--; x的值为&#xff08;&#xff09; A---2 B---3 C---4 D---5 正确答案&#xff1a;B 解…