dot语言学习笔记

Dot是开源工具包Graphviz上用来画图的一门脚本语言。通过布局引擎解析脚本得到图像,然后可以将图像导出为各种格式以满足需求,有了它,我们就可以很方便地通过编写脚本来画各种结构示意图和流程图。
常用关键字:
graph:定义当前图属性
node:定义各结点属性,如fontname
subgraph:定义子图,需要以cluster开头,否则引擎不识别
例:


digraph service_map {
    graph [dpi="300"];
    node [color="gray";shape="record";fontname="Microsoft YaHei"];
    
    label="Service Map";
    Request;
    github_pages [label="GitHub Pages"];
    subgraph cluster_web{
        label="Web front end server";
        nginx [label="Reverse Proxy Server"];
        docker [label="Docker Container Manager"];
    }
    subgraph cluster_docker{
        label="Docker Container Manager";
        openproject [label="OpenProject"];
        gitlab [label="GitLab"];
        wordpress [label="WordPress"];
        mysql [label="Common Mysql Database"];
    }
    subgraph cluster_filesystem{
        label="Mount at where";
        openproject_mnt [label="/opt/openproject/data:/var/lib/postgresql/9.6/main\l\n/opt/openproject/logs:/var/log/supervisor\l\n/opt/openproject/static:/var/db/openproject\l"];
        gitlab_mnt [label="/opt/gitlab/config:/etc/gitlab\l\n/opt/gitlab/logs:/var/log/gitlab\l\n/opt/gitlab/data:/var/opt/gitlab\l"];
        wordpress_mnt [label="/opt/wordpress/www:/var/www/html"];
        mysql_mnt [label="/opt/mysql/data:/var/lib/mysql"];
    }
    Request->nginx;
    nginx->docker;
    nginx->github_pages;
    docker->wordpress [label="hostname=wordpress.endercaster.com"];
    docker->openproject [label="hostname=openproject.endercaster.com"];
    docker->gitlab [label="hostname=gitlab.endercaster.com"];
    wordpress->mysql;
    wordpress->wordpress_mnt [label="mount"];
    openproject->openproject_mnt [label="mount"];
    gitlab->gitlab_mnt [label="mount"];
    mysql->mysql_mnt [label="mount"];
}

这段代码生成的图像如下

相对于图形化的visio,使用dot画图省去了排版,只需要关心软件中都有什么模块,实现什么功能,可以说是非常省心了。