当前位置:首页 > 技术分析 > 正文内容

用代码画图?Mermaid + Docker解锁数据可视化新姿势

ruisui881个月前 (03-24)技术分析10

一、什么是 Mermaid?

Mermaid 是一个基于 JavaScript 的图表工具,支持用 Markdown 语法生成交互式图表(如流程图、序列图、甘特图、类图等)。它广泛用于文档编写、技术演示和博客中。

二、使用官方 Docker 镜像

1. 拉取官方镜像

# 拉取最新版 Mermaid CLI 镜像(基于 Alpine Linux)
docker pull mermaid/mermaid-cli

# 或者拉取完整版镜像(包含更多工具)
docker pull mermaid/mermaid

2. 运行容器

# 运行交互式终端(基础版)
docker run -it --rm mermaid/mermaid-cli

# 运行容器并挂载当前目录(方便文件操作)
docker run -it -v $(pwd):/data mermaid/mermaid-cli

3. 验证安装

在容器中执行:

mermaid --version  # 查看版本号

三、自定义 Docker 镜像

1. 创建Dockerfile

dockerfile
# 使用 Node.js 作为基础镜像
FROM node:18-alpine

# 安装 Mermaid CLI
RUN npm install -g mermaid

# 设置工作目录
WORKDIR /data

# 暴露端口(可选)
EXPOSE 8080

# 启动命令(示例)
CMD ["mermaid", "init"]

2. 构建镜像

docker build -t my-mermaid-image .

3. 运行容器

# 挂载本地目录并运行
docker run -it -v $(pwd):/data my-mermaid-image

四、通过 Docker Compose 管理

1. 编写docker-compose.yml

yaml
version: '3'
services:
  mermaid:
    image: mermaid/mermaid-cli
    volumes:
      - ./docs:/data
    ports:
      - "8080:8080"

2. 启动服务

bash
docker-compose up -d

五、在容器中使用 Mermaid

1. 生成图表文件

# 将 Markdown 文件转换为 PNG
mermaid ./input.md --output ./output.png

# 生成 PDF
mermaid ./input.md --pdf ./output.pdf

2. 通过 Web 服务渲染

若需通过 HTTP 提供图表渲染功能,可以使用以下步骤:

  1. 安装 Express 和 Mermaid 服务器
bash
npm install express mermaid
  1. 创建 server.js
javascript
const express = require('express'); 
const app = express(); const mermaid = require('mermaid'); 
pp.get('/render', (req, res) => { const code = req.query.code; 
const svg = mermaid.render(code); res.send(svg); }); 
app.listen(3000, () => console.log('Server running on port 3000'));
  1. 构建镜像并运行
bash
docker build -t mermaid-server . docker run -p 3000:3000 mermaid-server

六、常见问题和解决方案

  1. 权限问题
  2. 在挂载卷时添加用户权限:
bash
docker run -it -u $(id -u):$(id -g) -v $(pwd):/data mermaid/mermaid-cli
  1. 图表不渲染
  2. 确保输入文件路径正确,且 Mermaid 语法无误。
  3. 服务端口冲突
  4. 修改容器端口映射(例如 EXPOSE 8081)。

七、高级用法

1. 结合 Node.js 项目

在项目中通过脚本调用 Mermaid:

javascript
const { exec } = require('child_process');
exec('mermaid input.md -o output.png', (err, stdout, stderr) => {
  console.log(err ? 'Error' : 'Success');
});

2. 使用 Docker Swarm 部署

通过 docker stack deploy 在集群中管理多节点服务。


八、参考资源

  • Mermaid git 页面:

https://github.com/mermaid-js/mermaid-cli



  • Mermaid 文档:

https://mermaid.nodejs.cn/intro/getting-started.html

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2978.html

标签: res.render
分享给朋友:

“用代码画图?Mermaid + Docker解锁数据可视化新姿势” 的相关文章

Git 分支管理策略与工作流程

(预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料)团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。看完这篇文章后,涉及GIT的工作中就会减少因为规范问题导致工作出错,当然如果你现在暂时还未有合...

抖音 Android 性能优化系列:启动优化实践

启动性能是 APP 使用体验的门面,启动过程耗时较长很可能使用户削减使用 APP 的兴趣,抖音通过对启动性能做劣化实验也验证了其对于业务指标有显著影响。抖音有数亿的日活,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音 Android 基础技术团队在体验优化方向...

BuildKit 镜像构建工具

#暑期创作大赛#快速开始 对于 Kubernetes 部署,请参阅examples/kubernetes。BuildKit 由buildkitd守护进程和buildctl客户端组成。虽然buildctl客户端可用于 Linux、macOS 和 Windows,但buildkitd守护程序目前仅适用于...

你感动了吗?佳能超规格镜头 RF 24-105mm F2.8深度测评

如果要你选一支用作多题材创作的挂机镜头,那我相信很多人会选择24-105mm这个焦段的镜头。作为一支可以实现从广角到长焦的变焦镜头,24-105mm有着丰富的焦段选择。只是基于镜头体积以及光学结构上的限制,此前的24-105mm镜头只能恒定在F4的光圈。而佳能打破了这一限制,将实用焦段和恒定光圈完美...

三维家-系统快捷键使用

快键件使用:通过简单的键盘+鼠标操作,快速完成搭配。1.基础快捷键1) Ctrl+V:复制选中对象第一步:鼠标左击物体,按下Ctrl+V 即可复制选中对象。2) Ctrl+G:组合多选对象第一步:按住Ctrl键多选对象--按住Ctrl+G--确定。3) Ctrl+B:解组选中对象第一步:左击选中对象...

虚幻引擎5.5现已发布 手游开发、动画制作重大改进

Epic在今天发布了虚幻引擎5.5,现可通过Epic Launcher下载。此版本在动画创作、渲染、虚拟制片、移动端游戏开发和开发人员迭代工具集等方面做出了重大改进。 官方博客:虚幻引擎5.5现已发布,在动画创作、虚拟制作和移动游戏开发方面取得了显著进步,渲染、摄像机内视觉特效和开发人员迭代等领域的...