博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JHipster生成微服务架构的应用栈(五)- 容器编排示例
阅读量:5931 次
发布时间:2019-06-19

本文共 3138 字,大约阅读时间需要 10 分钟。

本系列文章演示如何用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

img_63799cb90608614fb7b0ab49e09755be.png

3 生成编排文件

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

$ cd docker-compose/$ jhipster docker-compose

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

img_5e9a93e4b65ea49ac42cf48e513ce668.png

现在开始问答环节

3.1 Which type of application would you like to deploy?

选择想要部署的应用类型

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

img_9fb88bed7ed07ab3f87ea4358d2fa9ae.png

单击回车继续。

3.2 Which type of gateway would you like to use?

选择网关的类型

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

img_48b8decc357b9c77feb220ce124a273c.png

单击回车继续。

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

输入需要部署的网关和业务微服务的位置

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

img_6ccc0390179896e6acc1c8dd4e519e0f.png

单击回车继续。

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

选择需要加入编排配置文件的微服务

这是一个多选题,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
这里选择全部的微服务。

img_d9e2e86fdfdc6e175b6d8bf8f98b5c90.png

单击回车继续。

3.5 Do you want to setup monitoring for your applications ?

选择是否需要启动监控组件

这是一个单选题,有3个选项,使用上下键切换选项。
简单起见,选择No

img_c386b6fd791c36e1c3db3d8e8ab37490.png

单击回车继续。

3.6 Enter the admin password used to secure the JHipster Registry

输入JHipster Registry的admin账号的密码

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

img_0b81fb0dc7394646cc809cf3169cf993.png

单击回车继续。

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

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

img_9ca414da0e9ed2015f76b75edfe2b97b.png

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

修改配置文件

打开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

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

img_c2743894bd71b69a0a491b742f11d296.png

所有容器和容器内的微服务启动,需要大概3-5分钟。

启动完成后,就可以访问JHipster Registry和gateway的Web UI,默认用户名和密码都是admin

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

其它docker-compose命令

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

系列文章

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


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

转载地址:http://qlutx.baihongyu.com/

你可能感兴趣的文章
JS页面刷新保持数据不丢失
查看>>
清橙A1202&Bzoj2201:彩色圆环
查看>>
使用data pump工具的准备
查看>>
springMVC---级联属性
查看>>
get和post区别
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
做移动互联网App,你的测试用例足够吗?
查看>>
cmd.exe启动参数说明
查看>>
《随笔记录》20170310
查看>>
网站分析系统
查看>>
一站式解决,Android 拍照 图库的各种问题
查看>>
lsof命令
查看>>
阿里云云计算ACP考试知识点(标红为重点)
查看>>
从零开始来看一下Java泛型的设计
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
跨运营商组播传送案例(multicast-proxy-register应用)
查看>>
JTable的DefaultModel方法getValueAt(a,row)
查看>>