Docker and Java - FontConfiguration issue Docker and Java - FontConfiguration issue kubernetes kubernetes

Docker and Java - FontConfiguration issue


With openjdk:8u111-jdk-alpine, installing dejavu fix the problem:

For example:

Dockerfile:

FROM openjdk:8u111-jdk-alpine# Needed to fix 'Fontconfig warning: ignoring C.UTF-8: not a valid language tag'ENV LANG en_GB.UTF-8# JRE fails to load fonts if there are no standard fonts in the image; DejaVu is a good choice,# see https://github.com/docker-library/openjdk/issues/73#issuecomment-207816707RUN apk add --update ttf-dejavu && rm -rf /var/cache/apk/*VOLUME /tmpCOPY /target/*.jar app.jarENTRYPOINT ["java","-Xmx100m","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]


Installing libfontconfig1 solved the problem for me (source):

RUN apt-get install -y libfontconfig1 && rm -rf /var/lib/apt/lists/*


I think we found the problem.

When running on Jenkins we use the docker:dind (Docker inside docker) Docker image to provide the docker command in the build. This image is based on Alpine linux. When running docker info we get the following:

On Mac:

Kernel Version: 4.9.87-linuxkit-aufsOperating System: Docker for Mac

On Jenkins:

Kernel Version: 4.4.115-k8sOperating System: Alpine Linux v3.7 (containerized)

Alpine linux must be missing those fonts. We fixed the problem by manually installing them in the Dockerfile:

RUN apt-get update \ && apt-get install --assume-yes apt-utils \ && apt-get install --assume-yes software-properties-common \ && apt-get install --assume-yes dbus \ && apt-get install --assume-yes cgmanager \ && apt-get install --assume-yes glib-networking \ && apt-get install --assume-yes libnih-dbus-dev \ && apt-get install --assume-yes dconf-cli \ && apt-get install --assume-yes fontconfig

Not sure this is the minimum required libraries but those did the trick :D