PlantUMLのdocker イメージを試す

みんな大好きPlantUMLのdockerイメージがdocker hubに登録されていました!!!

plantuml/plantuml

「いや、前からあるじゃん」って思うかもしれませんが、PlantUML-Serverではなくて、PlantUMLのdocker イメージです。

このブログを書いている時点(2022.12.1)で確認できる一番古いtagが1.2022.8になっているので、今年の8月にこっそり作られたようです。

ただ、このPlantUMLのイメージはPlantUML Serverのイメージと違って使い方が書いていないので、自分が試した方法をメモしておきます。

環境

以下の環境で試しました。

  • MacBook Pro M1 macOS バージョン12.6

  • docker: Docker version 20.10.21, build baeda1f

とりあえず docker run

実行結果

% docker run --rm plantuml/plantuml
Unable to find image 'plantuml/plantuml:latest' locally
latest: Pulling from plantuml/plantuml
5843afab3874: Pull complete 
53c9466125e4: Pull complete 
d8d715783b80: Pull complete 
ce3d08f559fd: Pull complete 
aae4759eae07: Pull complete 
4f0c6d3bb110: Pull complete 
Digest: sha256:fb7780724913edb6fde211983e1b8ca83f7a426391c597731938a4c2c94c0448
Status: Downloaded newer image for plantuml/plantuml:latest
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
PlantUML version 1.2022.13 (Sat Nov 19 13:22:17 GMT 2022)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
 
PLANTUML_LIMIT_SIZE: 4096

Dot version: dot - graphviz version 2.47.1 (20210515.0534)
Installation seems OK. File generation OK

M1 で試したせいでワーニングが出ていますが、今手持ちがこれしかないので、このままやります。

githubに登録されているDockerfileを確認すると、以下のようになっていたので、デフォルトではバージョンを表示するようになっているようです。

ENTRYPOINT ["java", "-jar", "/opt/plantuml.jar"]
CMD ["-version"]

pngを生成する

PlantUMLのクイックスタートでお馴染みの以下のファイルを任意のところに作成します。(ファイル名は"sequenceDiagram.pu"としておきます)

@startuml
Alice -> Bob: test
@enduml

そして以下のコマンドを実行します。

% docker run -v "sequenceDiagram.puがあるディレクトリの絶対パス":/data --rm plantuml/plantuml sequenceDiagram.pu

上記を実行すると、sequenceDiagram.puと同じディレクトリにsequenceDiagram.pngが生成されていると思います。

はい。簡単ですね。

まとめ

  • PlantUMLのdocker イメージがいつの間にかdocker hubに登録されていました

  • これを使えば、自分のPCにわざわざ環境を構築しなくても済むので手軽に試すにはありかと思います

  • たぶんCIとかで使うことを想定しているんだろうなと思いました

  • もっと公式が宣伝してほしい

おまけ

大量のpuファイルを一度に実行したい場合は、以下のコマンドでできます。

% docker run --rm -v "puファイルがあるディレクトリの絶対パス:/data --entrypoint="" plantuml/plantuml sh -c 'find -name "*.pu" | xargs java -jar /opt/plantuml.jar'

entrypointを無効化して、パイプでxargsを使うために"sh -c"で実行しています1