JHipster生成微服务架构的应用栈(五)- 容器编排示例

本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。
环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里
应用栈名称:appstack
认证微服务: uaa
业务微服务:microservice1
网关微服务:gateway
实体名:role
主机IP:192.168.220.120

1 前提条件

1.1 已经生成微服务架构的应用栈

请参考这个系列的前4篇文章。

1.2 安装Docker Compose

推荐版本:1.21.2
完整安装说明,请参考这里

1.3 创建一个编排目录

在命令行,进入appstack目录,创建一个子目录docker-compose,现在整个应用栈的目录结构是这样的:

-- appstack
  |-- uaa
  |-- microservice1
  |-- gateway
  |-- docker-compose

1.4 公共镜像

预先下载openjdk:8-jre-alpine容器镜像,能提高后续工作的效率。

2 构建微服务的镜像

2.1 构建所有微服务的镜像

a, 构建uaa镜像

进入uaa目录,输入命令后回车:

$ cd uaa/
$ mvn –Pdev clean package dockerfile:build
b, 构建microservice1镜像

进入microservice1目录,输入命令后回车:

$ cd microservice1/
$ mvn –Pdev clean package dockerfile:build
c, 构建gateway镜像

进入gateway目录,输入命令后回车:

$ cd gateway/
$ mvn –Pdev clean package dockerfile:build

构建成功后,可以通过docker命令查看镜像列表:

$ docker images

JHipster生成微服务架构的应用栈(五)- 容器编排示例

3 生成编排文件

进入docker-compose目录,输入命令后回车:

$ cd docker-compose/
$ jhipster docker-compose

命令行输出jhipster:docker-compose命令启动信息

JHipster生成微服务架构的应用栈(五)- 容器编排示例

现在开始问答环节

3.1 Which type of application would you like to deploy?

选择想要部署的应用类型
这是一个单选题,有2个选项,使用上下键切换选项。
因为要部署的是一个微服务架构应用栈,这里选择Microservice application

JHipster生成微服务架构的应用栈(五)- 容器编排示例

单击回车继续。

3.2 Which type of gateway would you like to use?

选择网关的类型
这是一个单选题,有2个选项,使用上下键切换选项。
这里选择JHipster gateway based on Netflix Zuul

JHipster生成微服务架构的应用栈(五)- 容器编排示例

单击回车继续。

3.3 Enter the root directory where your gateway(s) and microservices are located

输入需要部署的网关和业务微服务的位置
这是一个相对于docker-compose的相对路径,默认路径是../,这也是之前生成的网关和业务微服务以及认证微服务的位置。

JHipster生成微服务架构的应用栈(五)- 容器编排示例

单击回车继续。

3.4 Which applications do you want to include in your configuration?

选择需要加入编排配置文件的微服务
这是一个多选题,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
这里选择全部的微服务。

JHipster生成微服务架构的应用栈(五)- 容器编排示例

单击回车继续。

3.5 Do you want to setup monitoring for your applications ?

选择是否需要启动监控组件
这是一个单选题,有3个选项,使用上下键切换选项。
简单起见,选择No

JHipster生成微服务架构的应用栈(五)- 容器编排示例

单击回车继续。

3.6 Enter the admin password used to secure the JHipster Registry

输入JHipster Registry的admin账号的密码
默认值是admin,这也是之前启动的JHipster Registry的密码。

JHipster生成微服务架构的应用栈(五)- 容器编排示例

单击回车继续。

问答结束,开始生成工程代码

这个过程通常需要1-2分钟。

JHipster生成微服务架构的应用栈(五)- 容器编排示例

完成后,在目录下看到所有生成的文件。

修改配置文件

打开docker-compose.yml文件

$ vi docker-compose
加入数据库密码和端口映射的配置
gateway-mysql:
    image: mysql:5
    environment:
        - MYSQL_ROOT_PASSWORD=my-secret-pw    # 加入数据库密码配置
    ports:
        - 32800:3306                          # 加入端口映射配置
......
......
microservice1-mysql:
    image: mysql:5
    environment:
        - MYSQL_ROOT_PASSWORD=my-secret-pw    # 加入数据库密码配置
    ports:
        - 32700:3306                          # 加入端口映射配置
......
......
uaa-mysql:
    image: mysql:5
    environment:
        - MYSQL_ROOT_PASSWORD=my-secret-pw    # 加入数据库密码配置
    ports:
        - 32900:3306                          # 加入端口映射配置
把Profile配置中的prod改成dev
gateway-app:
    image: gateway
    environment:
        - SPRING_PROFILES_ACTIVE=dev,swagger    # 如果这里是prod,改成dev

检查所有镜像的Tag是否和本地的镜像一致

特别是mysql和jhipster-registry这2个镜像的Tag,这样避免启动容器的时候,临时去下载镜像。

4 通过容器编排启动微服务应用栈

进入docker-compose目录,输入命令后回车:

$ docker-compose up -d

命令行输出所有微服务容器启动信息

JHipster生成微服务架构的应用栈(五)- 容器编排示例

所有容器和容器内的微服务启动,需要大概3-5分钟。
启动完成后,就可以访问JHipster Registry和gateway的Web UI,默认用户名和密码都是admin

http://192.168.220.120:8761
http://192.168.220.120:8080

其它docker-compose命令

$ docker-compose scale microservice1=5     # 将microservice1的容器实例扩展到5个
$ docker-compose stop                      # 停止所有编排中的容器
$ docker-compose down                      # 停止并且删除所有编排中的容器

系列文章

JHipster生成微服务架构的应用栈(一)- 准备工作
JHipster生成微服务架构的应用栈(二)- 认证微服务示例
JHipster生成微服务架构的应用栈(三)- 业务微服务示例
JHipster生成微服务架构的应用栈(四)- 网关微服务示例
JHipster生成微服务架构的应用栈(五)- 容器编排示例




你现在的气质里,藏着你走过的路,读过的书,爱过的人。


上一篇:微软公司希望在混合云和数字转型时代帮助管理服务商获胜


下一篇:不想成为那70%的数字化转型失败者?Riverbed应用性能管理升级