This repo contains scripts to create docker images which will be available in multiple variants.
The purpose is to publish docker images with a working and patched wkhtmltopdf installation and keep them as small as possible while delivering all functions.
The published images follow a naming convention.
The image name follows the format:
surnet/<os>-<base>-wkhtmltopdf
or surnet/<os/base>-wkhtmltopdf
<os>
matches the underlaying os.<base>
matches the used base image.<os/base>
matches the used base image if the os and base image are the same.
e.g. surnet/alpine-node-wkhtmltopdf
or surnet/alpine-wkhtmltopdf
The tags represent version numbers which follow the format:
<1>-<2>-<3>
<1>
matches the version of the base image.<2>
matches the wkhtmltopdf version.<3>
matches the Edition (see next chapter).
e.g. 3.6-0.12.4-small
For some versions there is a tag available with a -font
at the end.
These versions contain a fix for an issue which prevented the usage of other fonts except those included in the html (e.g. Google Fonts).
This fix will be included in all newer versions.
Further information: Surnet/docker-wkhtmltopdf#1
There are two editions available for each version.
small
contains only wkhtmltopdf. This should be sufficient for most use-casesfull
contains wkhtmltopdf, wkhtmltoimage and the libraries.
This image can be used as a base for your project or directly used via bash.
For a list of available versions please click here. If a version you would like is missing please open an issue on this repo.
FROM surnet/alpine-wkhtmltopdf:<version>
docker run surnet/alpine-wkhtmltopdf:<version> google.com - > test.pdf
This image can be used as a base for your NodeJS project.
For a list of available versions please click here. If a version you would like is missing please open an issue on this repo.
FROM surnet/alpine-node-wkhtmltopdf:<version>
This image can be used as a base for your Python project.
For a list of available versions please click here. If a version you would like is missing please open an issue on this repo.
FROM surnet/alpine-python-wkhtmltopdf:<version>
If you are using another image based on alpine you can use the following Dockerfile as a starting point.
Just replace the openjdk:8-jdk-alpine3.9
with the alpine based image you would like to use.
If you do not need wkhtmltoimage or the libs omit the last two lines.
FROM surnet/alpine-wkhtmltopdf:3.9-0.12.5-full as wkhtmltopdf
FROM openjdk:8-jdk-alpine3.9
# Install dependencies for wkhtmltopdf
RUN apk add --no-cache \
libstdc++ \
libx11 \
libxrender \
libxext \
libssl1.1 \
ca-certificates \
fontconfig \
freetype \
ttf-dejavu \
ttf-droid \
ttf-freefont \
ttf-liberation \
ttf-ubuntu-font-family \
&& apk add --no-cache --virtual .build-deps \
msttcorefonts-installer \
\
# Install microsoft fonts
&& update-ms-fonts \
&& fc-cache -f \
\
# Clean up when done
&& rm -rf /tmp/* \
&& apk del .build-deps
# Copy wkhtmltopdf files from docker-wkhtmltopdf image
COPY --from=wkhtmltopdf /bin/wkhtmltopdf /bin/wkhtmltopdf
COPY --from=wkhtmltopdf /bin/wkhtmltoimage /bin/wkhtmltoimage
COPY --from=wkhtmltopdf /bin/libwkhtmltox* /bin/
Please feel free to open a issue or pull request with suggestions.
Keep in mind that the build process of these container takes some (a lot of) time.
Based upon the following repos/inputs: