详解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再部署微服务是更好的。

相关推荐
VIP_CQCRE4 小时前
给团队搭一个 AI 工作台:Open WebUI 接入 Ace Data Cloud 实战
docker·ai·rag·open webui·ace data cloud
拂拉氏5 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Fcy6485 小时前
Linux下 五种IO模型的认识与⾮阻塞IO的实现
linux·服务器·io
Mikko75 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
书生执笔画浮沉5 小时前
分享一个开源小工具CAdapt
linux·c·gnu·glibc·kernel·升级·灵感
众链网络6 小时前
Agent 的成本大头不在“写“,在“判断“:拆解专用决策模型的三层架构
java·开发语言·人工智能·微服务
mounter6256 小时前
Linux 内核热升级(Live Update)技术详解:PCI、VFIO 与 IOMMU 子系统的演进与实战解析引言
linux·linux kernel·kernel·iommu·vfio
砚凝霜6 小时前
【软考信息安全】第十九章 Unix/Linux安全分析与防护
linux·安全·unix
2501_933923257 小时前
SpringCloud组件:Eureka服务注册与发现
java·开发语言·后端·spring cloud·eureka
creator_Li7 小时前
Linux 的 Page Cache
linux·page cache