十九章 网关引擎打包镜像部署
十九章 网关引擎打包镜像部署
hirikiapi-gateway-engine 是一个用于启动网关算力服务的引擎工程,它的代码内容几乎没有多少,主要负责的是工程的启动操作,因为镜像的打包也是从这个工程中处理。
实现
- api-gateway-core:核心通信模块,处理网关对接口的协议转换和映射操作以及泛化调用对应的 RPC 接口。
- api-gateway-assist:将 api-gateway-core 包装,提供简化的使用方式。
- api-gateway-engine 则是一个打包的执行引擎工程,打包后提供可部署到容器的 Jar 包。
这里的 engine 其实和之前的 assist-test 大体一致,只不过相当于从 assist 中抽取出来,做一个整理分类的动作。
工程相关
引入 assist 的 Jar 包
1 | <dependency> |
在 application.yml 中配置所需要的网关配置信息
1 | server: |
Tips:因为网关需要部署到 Docker 那么就不能指定 IP,因为这里的 IP 是自动分配的。所以需要把 api-gateway-core-09.GatewaySocketServer#bind 方法处理下,只提供端口即可。
打包相关
Dockerfile
1 | # 基础镜像 |
这是一个用于打包工程的 Dockerfile 文件,最主要的就是添加应用
ADD target/api-gateway-engine.jar /api-gateway-engine.jar
build.sh 构建文件
1 | docker build -f ./Dockerfile -t api-gateway-engine:1.0.1 . |
start.sh 启动脚本
1 | docker run -p 8004:8004 -p 7397:7397 --name api-gateway-engine -d api-gateway-engine:1.0.1 |
这里有2个端口映射,一个是 8004 engine 自身应用的端口,还有一个 7397 网关 Netty 服务的端口。
测试
前置步骤
- 启动 Docker 容器,因为打包镜像时候需要。
- 启动 zookeeper 注册中心。
- 在步骤 2 的基础上,启动 RPC 服务应用 api-gateway-test。
- 启动 api-gateway-center 注册中心,这样才能从注册中心拉取接口。
- 确保 api-gateway-core-09、api-gateway-assist-04、api-gateway-engine-01 都已 clean 后并 install 打包了。
网关镜像
测试调用
GET
Postman
日志
POST
Postman
日志
思考
SpringBoot工程是打包 War 包还是 Jar 包?
可能大部分伙伴经常看到工程中有的是配置 \
其实早在以前,大家对于 Spring 的 Web 工程,为了把一些资源类的文件包括 WEB 等都进行打包,通常是默认配置 war 包,并把打包后的文件放到 Tomcat 中进行部署,部署时会进行自动解压缩。而随着后来前后端分离以及容器化的兴起,通常会把 SpringBoot 打包成 Jar 包,也就是打包成单一可执行的程序【镜像】,放到 Docker 中启动。
问题:包部署 Docker 后无法使用 localhost 或者 127.0.0.1 这样的 IP 地址访问服务
对于 Docker 容器中不能直接使用 localhost 或者 127.0.0.1 这样的 IP 地址表示本机,因为当我们的包部署在容器中,“本机” 此时就是容器本身了,必须使用确定的 IP 地址来访问本机服务。