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部署是一个理想的选择。

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

相关推荐
冬奇Lab4 小时前
一天一个开源项目(第247篇):wxa-runner —— 让小程序在普通浏览器里用微信官方基础库跑起来,直接接 Playwright 做无头 E2E
微信小程序·开源
supabc1235 小时前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
4SAPI5 小时前
AI 数据分析工具大模型 API 选型指南
大数据·人工智能·架构·php·1024程序员节
企业数字化笔记5 小时前
视频人体姿态怎么做三维可视化?2D关键点、深度局限与技术选型
人工智能·算法·音视频
?abc!6 小时前
(数组)581. 最短无序连续子数组
数据结构·算法·leetcode
4SAPI6 小时前
搭建 AI 数据分析工具大模型 API 选型指南
数据库·人工智能·架构·php·1024程序员节
行者全栈架构师7 小时前
【鸿蒙心迹】让老照片变清晰:HarmonyOS 7.0 图像超分相册工程化落地与 5 个踩坑解法
架构·前端框架·开源
再__努力1点7 小时前
RK3576/RV1126B多路视频 AI 开源引擎 CosmoEdge:从模型到交付,轻松搞定!
人工智能·opencv·计算机视觉·架构·课程设计
用户094248568037 小时前
第7章:Redis有序集合 ZSet 实战:排行榜与延时任务
redis·架构·源码
欣欣之王来了8 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程