PlantUMLのdocker イメージを試す
みんな大好きPlantUMLのdockerイメージがdocker hubに登録されていました!!!
「いや、前からあるじゃん」って思うかもしれませんが、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