This will change the Graphviz behaviour inside the docker container.
Until now it was always a fixed Graphviz version inside the Dockerfile.
With these changes the docker container will always use the latest Graphviz release if the version was not manually set via the docker build argument `GRAPHVIZ_VERSION`.
If not set as build arg fetch latest version of Graphviz based on their release name by default.
An alternative would be to use `tag_name`.
Also, to avoid the overhead of getting all kinds of relase data, GitLabs GraphQL interface could be used.
```bash
curl -s \
-H "Content-Type:application/json" \
-d '{"query": "{project(fullPath:\"graphviz/graphviz\"){releases(first:5,sort:RELEASED_AT_DESC){nodes{name}}}}"}' \
"https://gitlab.com/api/graphql" \
| jq -r '.data.project.releases.nodes[].name' | sort -V -r | head -n 1
```
In GraphQL the alternative to `name` would be `tagName`.
There were same base image and naming changes for the jetty and tomcat images plantuml-server uses => plantuml-server uses a pretty old and vulnerable images.
- update base images for jetty and tomcat
- add a alpine version for jetty (not tomcat has no official alpine version)
- add autoremove and clean commands after graphviz installation. This reduces the images by about ~280 MB
- PDF dependency was missing in the pom file the JDK8
* We should think about creating a parent pom - in that case all plantuml dependencies could be in the parent pom and we would only the mantain one pom file.
(It is also possible to drop the Java 8 support.)
* Why do we not have any PDF tests?
- add rule to ignore version update hint with `-dev` followed by a dot and date (e.g. `0.37.0-dev.20230308`)
- migration from JUnit4 to JUnit5
Also manually cleaned up `/var/lib/apt/lists` in original commits but
got conflict with #97, then removed.
Ref:
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
> In addition, when you clean up the apt cache by removing
> /var/lib/apt/lists it reduces the image size, since the apt cache is not
> stored in a layer.
> Official Debian and Ubuntu images automatically run apt-get clean,
> so explicit invocation is not required.
The "special" value of `ROOT` will serve requests on `/`. Any other
value should serve on `/$BASE_URL` (as long as there are no slashes
in `BASE_URL` at least).
The default has been set to `plantuml` to better match documentation
in the README.md file.
Re #80, may help with #79.
Although sequence diagrams render fine without, any(?) other diagram
type requires the `GRAPHVIZ_DOT` environment variable to be set for
the server to produce usable output.
In order to use this functionality, you need to pass `--build-arg`
options for the `http_proxy`, `https_proxy` and `no_proxy` values
that are suitable for *your* build environment.
If not behind a proxy, simply don't pass any `*_proxy` build args.