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