Skip to content

Docker image 0.28.0 does not contain the correct plantuml version with compatibility cpu settings #1939

@kolewu

Description

@kolewu

The current kroki image 0.28.0 does contain plantuml 1.2025.2, but it is not the current version that works on older cpus.

Since the wrong version does not run on the old CPU (misses LZCNT, AVX2, BMI1, BMI2 and FMA), the version can only be verified in the binary:

# docker run -it --rm --entrypoint "" yuzutech/kroki:0.28.0 strings /usr/bin/plantuml | grep 1\.2025
1.2025.2
1.2025.2
1.2025.2

Running this version produces the known error about missing cpu features:

# docker run -it --rm --entrypoint "" yuzutech/kroki:0.28.0 /usr/bin/plantuml -version
The current machine does not support all of the following CPU features that are required by the image: [CX8, CMOV, FXSR, MMX, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, POPCNT, LZCNT, AVX, AVX2, BMI1, BMI2, FMA].
Please rebuild the executable with an appropriate setting of the -march option.

But replacing the plantuml binary with the current one works:

curl -Lo plantuml.zip https://github.com/yuzutech/plantuml/releases/download/v1.2025.2/plantuml-linux-amd64-1.2025.2.zip
unzip plantuml.zip plantuml-linux-amd64-1.2025.2

docker run -it --rm --entrypoint "" -v $(pwd)/plantuml-linux-amd64-1.2025.2:/usr/bin/plantuml yuzutech/kroki:0.28.0 plantuml -version

Unfortunately both binaries show the same version information (that seems to be wrongly dated, because 1.2025.2 is tagged at 2025-05-08):

PlantUML version 1.2025.2 (Tue Jan 07 17:35:36 UTC 2025)

Maybe this is the version information from the original jar and not the one from the GraalVM compilation.

The only visible clue is the date of the binary

# docker run -it --rm --entrypoint "" yuzutech/kroki:0.28.0 ls -l /usr/bin/plantuml
-rwxr-xr-x 1 root root 141961376 May  8 16:41 /usr/bin/plantuml

that is different from "May 27" the date displayed at the download assets from Release v1.2025.2 · yuzutech/plantuml.

For a workaround, build a new kroki image that only replaces the plantuml binary:

curl -Lo plantuml.zip https://github.com/yuzutech/plantuml/releases/download/v1.2025.2/plantuml-linux-amd64-1.2025.2.zip
unzip plantuml.zip plantuml-linux-amd64-1.2025.2

cat <<EOF >Dockerfile
FROM yuzutech/kroki:0.28.0

COPY plantuml-linux-amd64-1.2025.2 /usr/bin/plantuml
EOF

docker build -t kroki-workaround:0.28.0 .

It even works with v1.2025.4.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions