部署微服务集群

需求:将之前学习的cloud-demo微服务集群利用DockerCompose部署

实现思路

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

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

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

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

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

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

修改微服务配置

因为微服务将来要部署为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服务地址

打包

接下来需要将我们的每个微服务都打包。因为之前查看到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>

打包后:

拷贝jar包到部署目录

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

user-service:

 order-service:

gateway:

部署

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

上传到任意目录:

部署:

进入cloud-demo目录,然后运行下面的命令:

docker-compose up -d

DockerCompose-部署微服务集群相关推荐

  1. Docker-Compose一些常见的报错解决方法【部署微服务集群】

    部署微服务集群 ① 上传编写好了docker-compose文件 ② 启动nacos微服务 docker run --env MODE=standalone --name nacos -d -p 88 ...

  2. 使用 Docker Stack 部署多服务集群

    使用 Docker Stack 部署多服务集群 前言 单机模式下,我们可以使用 Docker Compose 来编排多个服务,而在 上一篇文章 中介绍的 Docker Swarm 只能实现对单个服务的 ...

  3. SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云无插件直播点播解决方案之子系统微服务集群解决方案

    SkeyeVSS综合安防监控Onvif.RTSP.GB28181视频云无插件直播点播解决方案之子系统微服务集群 我们通过SkeyeVSS系列文章<SkeyeVSS集群部署说明文档>可以了解 ...

  4. 使用DockerCompose部署Redis分片集群——整合SpringBoot

    今天来记录一下使用DockerCompose部署Redis分片集群的过程,前面写了几篇关于redis的博客了,这里就不再过多介绍了,直接上配置就好了 version: "3.0"s ...

  5. spring boot 微服务集群 + 注册中心

    spring boot 微服务框架下载地址: https://start.spring.io/ 注册中心 Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进 ...

  6. Eclipse启动SpringCloud微服务集群的方法

    1.说明 下面这篇文章介绍了Eureka Server集群的启动方法, SpringCloud创建Eureka模块集群 是通过jar包启动时指定配置文件的方式实现的. 现在只有Eureka Serve ...

  7. docker-compose部署MinIO分布式集群

    docker-compose部署MinIO分布式集群 文章目录 docker-compose部署MinIO分布式集群 概述 纠删码 部署 配置 概述 MinIO是全球领先的对象存储先锋,目前在全世界有 ...

  8. minio【docker-compose 部署minio分布式集群】

    minio[docker-compose 部署minio分布式集群] 1 下载docker-compose.yaml version: '3.7'# Settings and configuratio ...

  9. (转) 分布式-微服务-集群的区别

    1.分布式 将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互.区别分布式的方式是根据不同机器不同业务. 上面:service A.B.C.D 分别 ...

最新文章

  1. 网络编程4之UDP协议
  2. 深度学习笔记第一门课第一周:深度学习引言
  3. ​手把手教你如何进行 Golang 单元测试
  4. [FreeBSD]x86地址映射实例
  5. java eleven进度条
  6. BZOJ 1137 半平面交
  7. C语言makefile文件详解,makefile讲解
  8. 科技论文之Introduction部分写作
  9. App如何生成下载二维码?扫码即可下载App
  10. ie无法下载 无法打开该internet站点.请求的站点不可用或无法找到.请稍后重试
  11. 玉米稻风波被中途扼杀 国稻种芯-何登骥:生物育种风险机制
  12. win10 uwp 打电话
  13. 怎么注册Google账号(使用国内手机号注册)
  14. 写给新人的话——谈谈应届生入职后应该怎样快速成长
  15. 基于SSH开发装修软装设计与销售系统
  16. 【经验贴】用最土的手法,最高调的绕过反爬
  17. 计算机房的英语该怎么读,计算机机房硬件维护,Computer room hardware maintenance,音标,读音,翻译,英文例句,英语词典...
  18. iGuard简单突破
  19. CSharp 基本知识-数组
  20. 函数重载的条件、作用、注意事项

热门文章

  1. 【CMS】安装CMS
  2. 转再次写给我们这些浮躁的程序员
  3. 九阴真经 第十五层--node.js 第1天
  4. vue知识总结第一篇vue组件的定义以及父子组件的传值。
  5. 获取 input 单选框和多选框的值
  6. Linux网络基本配置
  7. 数据库3(DBUtils)
  8. Sybase数据库在UNIX、Windows上的实施和管理 出版预告
  9. 浅谈 举家搬迁静态文件到CDN
  10. Thinkphp3.2微信个人免签支付实例