微服务SpringCloud容器化案例
前言
当我们在使用微服务的时候,那么有一个问题一定会困扰我们,那就是项目的测试和部署。因为在单体应用下,部署项目很简单,直接打包启动就可以了,而对于微服务来说,因为有各个组件的存在所以让测试和部署都变得很麻烦,而容器化是微服务的部署一把利剑。
PS:本文不介绍具体docker使用的各种基础,以及微服务的各种基础,就是给出相应的案例,你可以根据这样的案例快速学会如何将你的微服务容器化。
实际案例
让我们先来看看,实现之后如果本地要进行测试,是多么方便。

只需要一个命令,就能将我们的服务都启动起来,包括注册中心,网关,服务都启动了,你不需要三四台服务器,也不需要安装配置各种复杂的环境。
当我们要停止所有服务的时候呢?

实际案例:https://github.com/LinkinStars/MicroServiceExample/tree/dockerization
微服务容器化的步骤
- 编写Dockerfile构建单个镜像
- 编写docker-compose.yml进行容器编排
- 修改各个应用中的application.yml的一些访问地址
容器化相关命令
单独部署:
进入某个应用的目录(目录下有Dockerfile)
使用命令:docker build -t mic-eureka .
整体编排部署:
进入根目录(目录下有docker-compose.yml)
使用命令:docker-compose up -d
容器化说明
在所有module每个目录下面都存在一个Dockerfile,类似如下:
# 基础镜像 FROM java:openjdk-8u111 # 作者 MAINTAINER LinkinStar linkinstar@foxmail.com # 将build/libs下的jar包拷贝到容器中的根目录,并命名为app.jar COPY build/libs/*.jar /app.jar # 声明开放端口 EXPOSE 8761 # 启动应用 ENTRYPOINT ["java", "-jar", "app.jar"]
容器编排:
在根目录下有docker-compose.yml文件,用于进行容器编排:
# 声明版本 version: '3' # 声明各个服务services services: # 服务名称 mic-eureka: # 构建当前服务的Dockerfile位置 build: context: eureka # 镜像名称 image: mic-eureka:latest # 映射的开放端口 ports: - 8761:8761 mic-gateway: build: context: gateway image: mic-gateway:latest # 需要关联的应用,这些关联的应用可以通过下面的名称来访问,类似域名的概念 links: - mic-eureka - mic-pay - mic-order ports: - 8769:8769 mic-pay: build: context: pay image: mic-pay:latest mic-order: build: context: order image: mic-order:latest
总结
对于jar包,我们还是需要手动用gradle的bootJar进行打包,其实可以编写相应的shell脚本来完成,这样更加的自动方便一些。 针对实际项目中,还有数据库,redis,mq这些都可以交由容器去进行部署和编排,这里只是抛砖引玉,对于这些的部署和实现就交给你来完成啦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?