详解SpringCloud微服务技术栈:DockerCompose部署微服务集群

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习

🌌上期文章:详解SpringCloud微服务技术栈:Gateway网关(断言、过滤器、跨域问题)

📚订阅专栏:微服务技术全家桶

希望文章对你们有所帮助

微服务集群是需要进行部署的,部署的方式可以通过Docker,但是如果服务的数量非常的多,那么利用Docker就要一个个构建,非常麻烦,而DockerCompose是更为方便的方式。

之前其实学过了Docker,可以看下面的文章来熟悉一下Docker的相关操作:
一文快速学会Docker软件部署
Docker容器命令案例:Nginx容器修改,Redis容器持久化

了解DockerCompose

DockerCompose可以基于Compose文件帮我们快速地部署分布式应用,而无数手动一个个创建和运行容器。

Compose是一个文本文件,通过指令定义集群中的每个容器如何运行。

模板如下:

yaml 复制代码
version: "3.8" # 版本
services:
	mysql: # 指定容器名称
		image: mysql:5.7.25  # 配置镜像
    	environment:
    		MYSQL_ROOT_PASSWORD: 123456 # 配置密码
    	volumes: # 数据卷挂载
     	- "/tmp/mysql/data:/var/lib/mysql"
     	- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
    # 临时创建镜像并运行
	web: # 容器名称
    	build: . # 从当前目录构建镜像
    	ports: # 指定端口
     	- "8090:8090"

安装DockerCompose(基于CentOS7)

1、下载:

powershell 复制代码
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

这种方式将会是慢慢下载的,如果想要快一点还可以直接去网上下载docker-compose,然后利用FinalShell上传到/usr/local/bin中。

2、修改文件的权限,使得其可以执行:

powershell 复制代码
# 修改权限
chmod +x /usr/local/bin/docker-compose

3、配置Base自动补全命令,方便Docker-Compose的后续使用:

powershell 复制代码
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果下载不下来,需要修改自己的hosts文件:

powershell 复制代码
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

如果还不行,换一下下载指令:

powershell 复制代码
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

总结:DockerCompose帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。

部署微服务集群

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

实现思路如下:

1、查看cloud-demo文件夹,里面已经编写好了docker-compose文件,这个文件夹可以从百度网盘中下载:

链接:https://pan.baidu.com/s/1n5-J1OLGh0Crmwrre51XZQ?pwd=34br

提取码:34br

这其中,我们需要部署的服务就是gateway、order-service、user-service、nacos以及MySQL。

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

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

(1)

在user-service、order-service以及gateway中的pom中都添加下面build:

xml 复制代码
	<build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

(2)打开maven生命周期,先clean再package:

打包完,各个module中的target中都会有app.jar文件。

如果打包的时候lombok报错,就修改一下

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

5、将cloud-demo上传至虚拟机,利用docker-compose up -d进行部署。

这里可能不一定可以直接完成,因为nacos启动的太慢了,而user-service和order-service在启动过程中都会尝试在nacos中注册,但是nacos却还没启动完成。如果这种情况,只需要继续执行语句docker-compose restart gateway userservice orderservice

其实在生产过程中先部署nacos再部署微服务是更好的。

相关推荐
浮生醉清风i1 分钟前
Spring Ai
java·人工智能·spring
知数SEO7 分钟前
Centos如何安装高版本Python
linux·python·centos
拽着尾巴的鱼儿12 分钟前
Spring:定时任务@Scheduled cron 的实现原理
java·后端·spring
Source.Liu18 分钟前
【IT工具】Ubuntu 环境下使用 Flask
linux·ubuntu·flask
xqhoj26 分钟前
Linux学习指南(二)——进程
linux·运维·服务器
猫猫的小茶馆29 分钟前
【Linux 驱动开发】三. 应用程序调用驱动过程分析
linux·arm开发·驱动开发·stm32·单片机·嵌入式硬件·pcb工艺
yangSnowy34 分钟前
Linux实用命令分析nginx系统日志文件
linux·运维·服务器
L.EscaRC1 小时前
深度解析 Spring 框架核心代理组件 MethodProxy.java
java·开发语言·spring
拽着尾巴的鱼儿1 小时前
Spring 缓存 @Cacheable 实现原理
java·spring·缓存
逍遥德1 小时前
函数式编程 Java Lambda Stream及其实现类常用函数
java·后端·spring