A docker image with openjdk 8 jre and wkhtmltopdf
With this docker image you have both openjdk jre 8 and wkhtmltopdf available (that's what I need now). Wkhtmltopdf is downloaded automatically from the official binaries during the build.
Why not use the debian provided wkhtmltopdf package?
Why not use jre-alpine as a base?
So, I've tried porting the Docker-Alpine-wkhtmltopdf method (wkhtmltopdf compilation from source) with a oraclejdk-alpine base image: the build was failing because initially some dependencies weren't found in
ERROR: unsatisfiable constraints: fonts-base (missing): required by: world[fonts-base] fonts-extra (missing): required by: world[fonts-extra]
Then I've found a way (see notes above) to build wkhtmltopdf from sources on oraclejdk-alpine base image, but the build take a very long time to complete.
Using (today) the Alpine provided package is also unuseful, because, like Debian, the Alpine included package doesn't works as expected.
Somebody also ended including a custom built binary but from my point of view this is not very security-friendly.
You can use this as a base image for your images, e.g.:
FROM lifeisfoo/docker-java-wkhtmltopdf COPY build/libs/your-application-all.jar / CMD java -jar your-application-all.jar
So your application can use the command to generate pdf the code.
You can use it as a standalone image for creating pdf directly from files:
echo "<h1>Hello</h1><i>world</i>" > hello.html docker run -v `pwd`:/pages lifeisfoo/docker-java-wkhtmltopdf wkhtmltopdf file:///pages/hello.html - > hello.pdf
Or from URLs:
docker run lifeisfoo/docker-java-wkhtmltopdf wkhtmltopdf github.com - > github.pdf
§ It is possible to manually add single fonts as dependencies because fonts-base and fonts-extra was only meta-packages: