You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器中转换.drawio为.png以适配GitLab CI自动化流程

轻量级.drawio转PNG的Docker+GitLab CI实现方案

一、基于Alpine构建轻量转换镜像(最推荐)

Alpine镜像体积远小于Ubuntu,适合CI场景,结合drawio官方CLI工具实现转换:

1. 编写Dockerfile

FROM alpine:3.18

# 安装运行依赖:无头OpenJDK、证书工具、fuse(用于运行AppImage)
RUN apk add --no-cache openjdk17-jre-headless ca-certificates wget fuse3

# 下载drawio的CLI AppImage(去drawio官方发布页找对应版本的下载链接替换占位符)
RUN wget -O /usr/local/bin/drawio <drawio AppImage下载地址> \
    && chmod +x /usr/local/bin/drawio

2. 本地测试转换

构建镜像后,挂载本地目录执行转换:

docker build -t drawio-converter .
docker run --rm -v $(pwd):/data drawio-converter drawio --export --format png --output /data/result.png /data/your-diagram.drawio

二、直接使用社区预构建镜像(省事儿)

不想自行构建的话,直接用基于Alpine的lucaswerkmeister/drawio-cli镜像:

docker run --rm -v $(pwd):/data lucaswerkmeister/drawio-cli export --format png --output /data/result.png /data/your-diagram.drawio

三、GitLab CI流水线配置

在项目根目录创建.gitlab-ci.yml,自动完成转换并上传制品:

stages:
  - convert
  - store

convert_diagrams:
  stage: convert
  image: drawio-converter  # 替换为自己构建的镜像名,或lucaswerkmeister/drawio-cli
  script:
    - mkdir -p converted_pngs
    # 批量转换所有.drawio文件到指定目录
    - drawio --export --format png --output converted_pngs/ *.drawio
  artifacts:
    paths:
      - converted_pngs/
    expire_in: 30d  # 按需调整制品过期时间

store_artifacts:
  stage: store
  dependencies:
    - convert_diagrams
  script:
    - echo "转换后的PNG已作为制品上传"
  artifacts:
    paths:
      - converted_pngs/
    expire_in: 90d  # 可设为never实现永久存储

关键细节

  • 轻量优势:Alpine基础镜像仅5MB左右,加上依赖后最终镜像体积仅几十MB,远小于Ubuntu镜像。
  • CLI参数说明:
    • --export:开启导出模式
    • --format png:指定输出格式为PNG
    • --output:指定输出目录/文件名
    • 支持批量转换,用*.drawio可处理同目录下所有.drawio文件
  • GitLab制品:转换后的PNG会自动存储为流水线制品,可在流水线页面下载,也可集成到后续流程中

内容的提问来源于stack exchange,提问作者eXor420

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:18:31