mirror of
https://github.com/octoleo/plantuml-server.git
synced 2024-11-14 00:14:06 +00:00
a6e69b33eb
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`.
80 lines
2.5 KiB
Docker
80 lines
2.5 KiB
Docker
FROM maven:3-eclipse-temurin-11 AS builder
|
|
|
|
COPY pom.xml /app/
|
|
COPY src/main /app/src/main/
|
|
|
|
WORKDIR /app
|
|
RUN mvn --batch-mode --define java.net.useSystemProxies=true package
|
|
|
|
########################################################################################
|
|
|
|
FROM jetty:11.0.15-jre11
|
|
|
|
# Proxy and OldProxy need empty path segments support in URIs
|
|
# Hence: allow AMBIGUOUS_EMPTY_SEGMENT
|
|
# Changes are only active if `/generate-jetty-start.sh` is called!
|
|
RUN sed -i 's/# jetty\.httpConfig\.uriCompliance=DEFAULT/jetty.httpConfig.uriCompliance=DEFAULT,AMBIGUOUS_EMPTY_SEGMENT/g' /var/lib/jetty/start.d/server.ini
|
|
|
|
USER root
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
curl \
|
|
fonts-noto-cjk \
|
|
libgd3 \
|
|
&& \
|
|
rm -rf /var/lib/apt/lists/* && \
|
|
/generate-jetty-start.sh
|
|
|
|
# Build Graphviz from source because there are no binary distributions for recent versions
|
|
ARG GRAPHVIZ_VERSION
|
|
ARG GRAPHVIZ_BUILD_DIR=/tmp/graphiz-build
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
jq \
|
|
libexpat1-dev \
|
|
libgd-dev \
|
|
zlib1g-dev \
|
|
&& \
|
|
mkdir -p $GRAPHVIZ_BUILD_DIR && \
|
|
cd $GRAPHVIZ_BUILD_DIR && \
|
|
GRAPHVIZ_VERSION=${GRAPHVIZ_VERSION:-$(curl -s https://gitlab.com/api/v4/projects/4207231/releases/ | jq -r '.[] | .name' | sort -V -r | head -1)} && \
|
|
curl -o graphviz.tar.gz https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/${GRAPHVIZ_VERSION}/graphviz-${GRAPHVIZ_VERSION}.tar.gz && \
|
|
tar -xzf graphviz.tar.gz && \
|
|
cd graphviz-$GRAPHVIZ_VERSION && \
|
|
./configure && \
|
|
make && \
|
|
make install && \
|
|
apt-get remove -y \
|
|
build-essential \
|
|
jq \
|
|
libexpat1-dev \
|
|
libgd-dev \
|
|
zlib1g-dev \
|
|
&& \
|
|
apt-get autoremove -y && \
|
|
apt-get clean & \
|
|
rm -rf /var/lib/apt/lists/* && \
|
|
rm -rf $GRAPHVIZ_BUILD_DIR
|
|
|
|
COPY docker-entrypoint.jetty.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
USER jetty
|
|
|
|
ENV WEBAPP_PATH=$JETTY_BASE/webapps
|
|
RUN rm -rf $WEBAPP_PATH && \
|
|
mkdir -p $WEBAPP_PATH
|
|
COPY --from=builder /app/target/plantuml.war /plantuml.war
|
|
COPY ROOT.jetty.xml $WEBAPP_PATH/ROOT.xml
|
|
|
|
# Openshift https://docs.openshift.com/container-platform/4.9/openshift_images/create-images.html#images-create-guide-openshift_create-images
|
|
USER root
|
|
RUN chgrp -R 0 $JETTY_BASE && chmod -R g=u $JETTY_BASE
|
|
RUN chgrp -R 0 /tmp && chmod -R g=u /tmp
|
|
USER jetty
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
VOLUME ["/tmp/jetty"]
|