docker-compose构建springcloud微服务项目
1、前言
开发构建过s[ringcloud微服务项目的人都知道,众多的服务部署起来相当麻烦,docker的出现极大程度的解决了这个问题,但通过docker部署时,由于服务数量之多,启停服务就会变得麻烦。docker-compose就解决了这个问题,docker-compose的介绍可以查看上一篇文章
。基于springcloud微服务进行实战说明,将构建一个在Docker Compose上运行的注册中心、配置中心、网关服务三个服务(三个容器),以此掌握docker Compose的基本使用。
2、服务准备
注册中心、配置中心、网关服务,使用之前开发好的服务,这里不再具体说明如何开发,代码可从github上获取,
。由于github上代码会经常进行优化调整,故此将本文演示代码打包了一份供大家 ,便于与文中提及的保持一致。涉及服务如下:
序号 |
项目名 |
打包jar名 |
说明 |
|
1 |
|
register-center-1.0.jar |
注册中心 |
|
2 |
|
config-center-1.0.jar |
配置中心 |
|
3 |
|
gateway-1.0.jar |
网关服务 |
涉及服务、dockerfile、docker-compose.yml项目结构如下:
(只列出主要关注的文件位置)
三个服务的启动顺序如下:
springCloudEureka ——> springCloudConfigServer ——> springCloudZuulGateway
3、Dockerfile定义
为每个服务编写docker镜像的Dockerfile脚本,分别位于各项目的\src\main\docker目录下管理。Dockerfile中所有指令的详细说明,请查阅关于Dockerfile文件定义的详细说明介绍,本文只说明本例中用到的指令。
(1)springCloudEureka:
说明:
- FROM java:8
FROM 指定基于的基础镜像。必须在第一行,本例中是基于Java 8作为基础镜像的。
- RUN mkdir /microservice
RUN 执行shell命令。本例中是用于创建microservice目录。
- WORKDIR /microservice
WORKDIR 为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。
- ADD /register-center-1.0.jar /microservice/
ADD 复制指定位置的程序包到容器的指定位置。本例中是将位于该Dockerfile同一目录下的springCloudEureka-1.0.jar复制到容器的/microservice/目录下。
- EXPOSE 8761
EXPOSE 暴露容器的端口,供外部使用。本例中是只注册中心服务springCloudEureka的端口,并确保对外能够访问。
- ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", ……]
ENTRYPOINT 配置容器启动后只需的命令。本例中是启动Java程序。
(2)springCloudConfigServer:
(3)springCloudZuulGateway:
4、docker-compose.yml定义
这个脚本中定义了一次性启停上述三个服务,并实现服务间的通信,脚本内容如下:
5、编译、运行
将各个打包好的服务jar包 、Dockerfile脚本、 docker-compose.yml上传至docker服务器上,我是存放在如下结构的目录下,具体依个人习惯而定。
(1)编译镜像
register-center(注册中心):
config-center(配置中心):
gateway(网关服务):
(2)运行
在docker-compose.yml目录下,执行 docker-compose up -d命令后台启动。
至此,通过docker-compose完成微服务项目中多个服务的启动。
docker-compose常用命令说明:
1)启停
- docker-compose up -d 全部后台启动
- docker-compose stop xxx 停止某一个服务
- docker-compose stop 停止所有服务
- docker-compose start xxx启动某一个服务
- docker-compose restart xxx 重启某一个服务
2)其他
- docker-compose config 查看当前yml文件中的所有配置
- docker-compose rm xxx 删除某一个服务(容器)
- docker-compose rm 删除所有服务(容器)
- 点赞
- 收藏
- 关注作者
评论(0)