- Kroki 主页: kroki.io/
- Kroki 文档: docs.kroki.io/
昨天我们在文章# Kroki-使用代码生成图表-API中已经介绍如何使用API的方式生成图表,没看的小伙伴可以返回先看一下。
在如今的技术大环境中,将复杂的概念或数据可视化为图表变得越来越重要。Kroki作为一个强大的工具,允许我们通过代码生成各种图表,为开发者和团队提供了极大的便利。
但如何在本地部署Kroki,实现私有化部署,确保数据安全和提高访问速度呢?
下面就让我们一起来看一下如何实现Kroki的本地部署:
为什么我们需要在本地部署Kroki呢?私有化部署不仅可以确保数据的安全性,避免敏感信息在公共网络上传输,还可以根据团队的具体需求进行定制和优化,提供更稳定和高效的服务。
开始部署
开始部署之前,确保你的系统已经安装了Docker,因为Kroki是基于Docker容器技术来部署的。这为我们提供了一个隔离的环境,确保Kroki运行稳定且不会与其他应用产生冲突。
-
获取Kroki的Docker镜像 :运行命令
docker pull yuzutech/kroki
来从Docker Hub获取Kroki的最新镜像。 -
启动Kroki容器 :使用命令
docker run -d -p 8000:8000 yuzutech/kroki
来启动一个Kroki容器实例。使Kroki在8000端口上运行。 -
验证部署 :在浏览器中访问
http://localhost:8000
,如果看到Kroki的欢迎页面,说明你已经成功部署了Kroki。 -
使用Kroki:现在,你可以开始使用Kroki的API,通过简单的代码生成各种图表。例如,使用PlantUML描述你的系统架构,然后通过Kroki将其转换为SVG或PNG格式的图像。
-
优化和定制:根据团队的需求,你可以进一步配置Kroki,例如增加支持的图表类型、优化性能或集成其他工具。
通过上面的步骤按顺序操作就可以完成Kroki的本地部署,让我们一起来看一下效果:
说明我们本地已经成功部署了Kroki。
怎么使用本地部署的Kroki?
1.使用Postmain
-
新一个new Worksapce,名称最好起
kroki
,这样就与本地的其它API分开了。 -
访问:http://127.0.0.1:8000/plantuml
- plantuml 是通过kroki.io/examples.ht... 这个示例网站上,要绘制哪个图表就把项目名称复制过来。
-
Headers:
makefileAccept: image/svg+xml Content-Type: text/plain Kroki-Diagram-Options-Key: value
-
Body:
less
@startuml
participant User
participant System
User -> System: Request
System --> User: Response
@enduml
通过上面的配置,我们就可以生成自己的图表图片了。
下面是一个抽奖系统的例子:
plantuml
@startuml
!include C4_Container.puml
LAYOUT_TOP_DOWN()
LAYOUT_WITH_LEGEND()
title 抽奖系统
Person(customer, User, "用户")
Person(admin, Admin, "管理员")
System_Boundary(c1, "抽奖系统") {
Container(spa, "Single-Page Application", "显示抽奖二维码,抽奖轮次,抽奖排队,中奖名单", "Node.js React, Ant Design")
Container(wx_app, "微信小程序", "扫Single-Page Application 二维码进入后,提交个人信息", "微信小程序API")
Container(crm, "管理平台","用来配置奖品,活动,抽奖概率,查看中奖,核销奖品等","Node.js React, Ant Design")
ContainerDb(database, "Database", "MySQL Database", "存储用户信息,排队信息,支付信息,抽奖结果信息等")
Container(server, "GoLang API Application", "GoLang, Docker Container", "使用GoLang开发后台API")
}
Rel(customer, wx_app, "Uses", "微信访问微信小程序")
Rel(customer, spa, "Uses", "微信扫码")
Rel(admin, crm, "Uses", "管理员")
Rel(spa, server, "Uses", "async, JSON/HTTPS")
Rel(wx_app, server, "Uses", "async, JSON/HTTPS")
Rel(crm, server, "Admin", "async, JSON/HTTPS")
Rel_Back_Neighbor(database, server, "Reads from and writes to", "sync, JDBC")
@enduml
效果图:
可以用Postmain的Save response to file
来保存图片。
下载后的效果:
使用Docker Compose管理:
我们在使用mermaid
生成图表时访问 http://127.0.0.1:8000/mermaid 发现会出错:
这是由于我们使用了docker pull yuzutech/kroki
来安装kroki的实例只支持个别的图表例如:plantuml,pikchr,c4plantuml这些都是支持的。
要怎么支持全部绘图工具呢?
- 部署文档:docs.kroki.io/kroki/setup...
- Run multiple Kroki containers together
- 运行多个容器可以让你在自己的环境中使用Kroki提供的所有图表功能。由yuzutech/kroki镜像提供的网关服务器容器是最基本的需求。
下面的Kroki docker-compose.yml配置文件在运行不同的Kroki容器组合的所有示例中都被使用。
在本地新建docker-compose.yml
:
docker
version: "3"
services:
kroki:
image: yuzutech/kroki
depends_on:
- blockdiag
- mermaid
- bpmn
- excalidraw
environment:
- KROKI_BLOCKDIAG_HOST=blockdiag
- KROKI_MERMAID_HOST=mermaid
- KROKI_BPMN_HOST=bpmn
- KROKI_EXCALIDRAW_HOST=excalidraw
- KROKI_WIREVIZ_HOST=wireviz
ports:
- "8000:8000"
blockdiag:
image: yuzutech/kroki-blockdiag
expose:
- "8001"
mermaid:
image: yuzutech/kroki-mermaid
expose:
- "8002"
bpmn:
image: yuzutech/kroki-bpmn
expose:
- "8003"
excalidraw:
image: yuzutech/kroki-excalidraw
expose:
- "8004"
wireviz:
image: yuzutech/kroki-wireviz
ports:
- "8006"
运行命令:
docker-compose up -d
这样我们再来访问一下:http://127.0.0.1:8000/mermaid
rust
sequenceDiagram
participant Alice
participant Bob
Alice->John: Hello John, how are you?
loop Healthcheck
John->John: Fight against hypochondria
end
Note right of John: Rational thoughts prevail...
John-->Alice: Great!
John->Bob: How about you?
Bob-->John: Jolly good!
效果图:
总结
Kroki是一个强大的工具,允许用户通过简单的代码生成各种图表。为了确保部署的简便性和一致性,Kroki提供了Docker镜像,使得在任何支持Docker的环境中部署Kroki变得非常简单。
- 简化部署:通过Docker部署Kroki,无需关心复杂的依赖和配置问题,只需几个命令即可启动Kroki服务。
- 一致性:无论是在开发环境、测试环境还是生产环境,Docker确保Kroki的行为和性能都是一致的。
- 扩展性:Kroki的Docker部署支持多容器运行,这意味着用户可以根据需要启动多个Kroki实例,满足高并发的需求。
- 与其他服务集成:Kroki提供了多种Docker镜像,支持各种图表库,用户可以根据需要选择要部署的图表库,或者一次性部署所有支持的图表库。
- 安全性:通过Docker部署,Kroki运行在隔离的环境中,确保了系统的安全性。
部署步骤简述:
- 获取Kroki的Docker镜像:可以直接从Docker Hub上拉取Kroki的官方镜像。
- 运行Kroki容器 :使用
docker run
命令启动Kroki容器,同时指定必要的端口映射。 - 使用Docker Compose管理 :Kroki提供了
docker-compose.yml
文件,允许用户轻松地启动Kroki及其所有依赖的服务。
使用Docker部署Kroki不仅简化了部署过程,还确保了服务的稳定性和可靠性。对于希望在私有环境中使用Kroki的用户来说,Docker部署是一个理想的选择。
希望对您有所帮助谢谢!!!