common/example/images/wkhtmltopdf/Dockerfile

197 lines
4.6 KiB
Docker

FROM danielberteaud/alpine:24.3-1 AS builder
ARG WKHTMLTOX_VERSION=0.12.6
# Copy patches
COPY resources/ /
# Alpine 3.11 and higher versions have libstdc++ and g++ v9+ in their repositories which breaks the build
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.10/main' >> /etc/apk/repositories
# Install needed packages
RUN set -eu \
apk add --no-cache \
libstdc++=8.3.0-r0 \
libx11 \
libxrender \
libxext \
libssl1.1 \
ca-certificates \
fontconfig \
freetype \
ttf-dejavu \
ttf-droid \
ttf-freefont \
ttf-liberation &&\
apk add --no-cache --virtual .build-deps \
g++=8.3.0-r0 \
git \
gtk+ \
gtk+-dev \
make \
mesa-dev \
msttcorefonts-installer \
openssl-dev \
patch \
fontconfig-dev \
freetype-dev &&\
# Install microsoft fonts \
update-ms-fonts &&\
fc-cache -f &&\
# Download source files \
git clone --recursive https://github.com/wkhtmltopdf/wkhtmltopdf.git /tmp/wkhtmltopdf &&\
cd /tmp/wkhtmltopdf &&\
git checkout tags/${WKHTMLTOX_VERSION} &&\
# Apply patches \
cd /tmp/wkhtmltopdf/qt &&\
patch -p1 -i /tmp/wkhtml_patches/qt-musl.patch &&\
patch -p1 -i /tmp/wkhtml_patches/qt-musl-iconv-no-bom.patch &&\
patch -p1 -i /tmp/wkhtml_patches/qt-recursive-global-mutex.patch &&\
patch -p1 -i /tmp/wkhtml_patches/qt-gcc6.patch &&\
# Modify qmake config \
sed -i -e 's|-O2|$CXXFLAGS|' \
-e '/^QMAKE_RPATH/s| -Wl,-rpath,||g' \
-e '/^QMAKE_LFLAGS\s/s|+=|+= $LDFLAGS|g' \
mkspecs/common/g++.conf &&\
# Prepare optimal build settings\
NB_CORES=$(grep -c '^processor' /proc/cpuinfo) &&\
\
# Install qt \
./configure -confirm-license -opensource \
-prefix /usr \
-datadir /usr/share/qt \
-sysconfdir /etc \
-plugindir /usr/lib/qt/plugins \
-importdir /usr/lib/qt/imports \
-silent \
-release \
-static \
-webkit \
-script \
-svg \
-exceptions \
-xmlpatterns \
-openssl-linked \
-no-fast \
-no-largefile \
-no-accessibility \
-no-stl \
-no-sql-ibase \
-no-sql-mysql \
-no-sql-odbc \
-no-sql-psql \
-no-sql-sqlite \
-no-sql-sqlite2 \
-no-qt3support \
-no-opengl \
-no-openvg \
-no-system-proxies \
-no-multimedia \
-no-audio-backend \
-no-phonon \
-no-phonon-backend \
-no-javascript-jit \
-no-scripttools \
-no-declarative \
-no-declarative-debug \
-no-mmx \
-no-3dnow \
-no-sse \
-no-sse2 \
-no-sse3 \
-no-ssse3 \
-no-sse4.1 \
-no-sse4.2 \
-no-avx \
-no-neon \
-no-rpath \
-no-nis \
-no-cups \
-no-pch \
-no-dbus \
-no-separate-debug-info \
-no-gtkstyle \
-no-nas-sound \
-no-opengl \
-no-openvg \
-no-sm \
-no-xshape \
-no-xvideo \
-no-xsync \
-no-xinerama \
-no-xcursor \
-no-xfixes \
-no-xrandr \
-no-mitshm \
-no-xinput \
-no-xkb \
-no-glib \
-no-icu \
-nomake demos \
-nomake docs \
-nomake examples \
-nomake tools \
-nomake tests \
-nomake translations \
-graphicssystem raster \
-qt-zlib \
-qt-libpng \
-qt-libmng \
-qt-libtiff \
-qt-libjpeg \
-optimized-qmake \
-iconv \
-xrender \
-fontconfig \
-D ENABLE_VIDEO=0 &&\
make --jobs $(($NB_CORES*2)) --silent &&\
make install &&\
\
# Install wkhtmltopdf \
cd /tmp/wkhtmltopdf &&\
qmake &&\
make --jobs $(($NB_CORES*2)) --silent &&\
make install &&\
make clean &&\
make distclean &&\
\
# Uninstall qt \
cd /tmp/wkhtmltopdf/qt &&\
make uninstall &&\
make clean &&\
make distclean &&\
\
# Clean up when done \
rm -rf /tmp/* &&\
apk del .build-deps
FROM danielberteaud/alpine:24.3-1
MAINTAINER Daniel Berteaud <dbd@ehtrace.com>
RUN set -eux &&\
# For wkhtml2pdf
apk add --no-cache \
libstdc++ \
libx11 \
libxrender \
libxext \
ca-certificates \
fontconfig \
freetype \
ttf-dejavu \
ttf-droid \
ttf-freefont \
ttf-liberation \
&&\
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 --from=builder /bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf