Kroki-使用代码生成图表-Docker

昨天我们在文章# Kroki-使用代码生成图表-API中已经介绍如何使用API的方式生成图表,没看的小伙伴可以返回先看一下。

在如今的技术大环境中,将复杂的概念或数据可视化为图表变得越来越重要。Kroki作为一个强大的工具,允许我们通过代码生成各种图表,为开发者和团队提供了极大的便利。

但如何在本地部署Kroki,实现私有化部署,确保数据安全和提高访问速度呢?

下面就让我们一起来看一下如何实现Kroki的本地部署:

为什么我们需要在本地部署Kroki呢?私有化部署不仅可以确保数据的安全性,避免敏感信息在公共网络上传输,还可以根据团队的具体需求进行定制和优化,提供更稳定和高效的服务。

开始部署

开始部署之前,确保你的系统已经安装了Docker,因为Kroki是基于Docker容器技术来部署的。这为我们提供了一个隔离的环境,确保Kroki运行稳定且不会与其他应用产生冲突。

  1. 获取Kroki的Docker镜像 :运行命令 docker pull yuzutech/kroki 来从Docker Hub获取Kroki的最新镜像。

  2. 启动Kroki容器 :使用命令 docker run -d -p 8000:8000 yuzutech/kroki 来启动一个Kroki容器实例。使Kroki在8000端口上运行。

  3. 验证部署 :在浏览器中访问 http://localhost:8000,如果看到Kroki的欢迎页面,说明你已经成功部署了Kroki。

  4. 使用Kroki:现在,你可以开始使用Kroki的API,通过简单的代码生成各种图表。例如,使用PlantUML描述你的系统架构,然后通过Kroki将其转换为SVG或PNG格式的图像。

  5. 优化和定制:根据团队的需求,你可以进一步配置Kroki,例如增加支持的图表类型、优化性能或集成其他工具。

通过上面的步骤按顺序操作就可以完成Kroki的本地部署,让我们一起来看一下效果:

说明我们本地已经成功部署了Kroki。

怎么使用本地部署的Kroki?

1.使用Postmain

  • 新一个new Worksapce,名称最好起kroki,这样就与本地的其它API分开了。

  • 访问:http://127.0.0.1:8000/plantuml

    • plantuml 是通过kroki.io/examples.ht... 这个示例网站上,要绘制哪个图表就把项目名称复制过来。
  • Headers:

    makefile 复制代码
    Accept: 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变得非常简单。

  1. 简化部署:通过Docker部署Kroki,无需关心复杂的依赖和配置问题,只需几个命令即可启动Kroki服务。
  2. 一致性:无论是在开发环境、测试环境还是生产环境,Docker确保Kroki的行为和性能都是一致的。
  3. 扩展性:Kroki的Docker部署支持多容器运行,这意味着用户可以根据需要启动多个Kroki实例,满足高并发的需求。
  4. 与其他服务集成:Kroki提供了多种Docker镜像,支持各种图表库,用户可以根据需要选择要部署的图表库,或者一次性部署所有支持的图表库。
  5. 安全性:通过Docker部署,Kroki运行在隔离的环境中,确保了系统的安全性。

部署步骤简述:

  1. 获取Kroki的Docker镜像:可以直接从Docker Hub上拉取Kroki的官方镜像。
  2. 运行Kroki容器 :使用docker run命令启动Kroki容器,同时指定必要的端口映射。
  3. 使用Docker Compose管理 :Kroki提供了docker-compose.yml文件,允许用户轻松地启动Kroki及其所有依赖的服务。

使用Docker部署Kroki不仅简化了部署过程,还确保了服务的稳定性和可靠性。对于希望在私有环境中使用Kroki的用户来说,Docker部署是一个理想的选择。

希望对您有所帮助谢谢!!!

相关推荐
tinker在coding30 分钟前
Coding Caprice - Linked-List 1
算法·leetcode
工业甲酰苯胺5 小时前
分布式系统架构:服务容错
数据库·架构
XH华5 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生5 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_5 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子6 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
菜鸡中的奋斗鸡→挣扎鸡6 小时前
滑动窗口 + 算法复习
数据结构·算法
Lenyiin6 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
郭wes代码6 小时前
Cmd命令大全(万字详细版)
python·算法·小程序