Dockerfile

https://www.cnblogs.com/whyly/p/16356607.html

dockerfile直接安装

  • 可以安装成功但是缺少qt插件,转pdf时会报错
# 更改为阿里的镜像源
RUN  sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories
# install unpatched wkhtmltopdf
RUN apk add --no-cach wkhtmltopdf

#只有3.14版支持apk安装,3.15版更装不上

wkhtmltopdf有with unpatched qt和with patched qt两个版本,alpine默认安装的是unpatched版本,这个版本不能支持例如页眉、页脚、边距等高级操作,所以我们需要安装patched版本

安装wkhtmltopdf with patched qt

网上有大佬已经造好了轮子!!!基本原理是先通过容器把wkhtmltopdf with patched qt的二进制文件编译好,然后从容器内考出来,构建自己镜像的时候COPY进去替换默认的wkhtmltopdf二进制文件,为了支持中文,把字体文件一起拷进去就好了。上面Dockerfile中的wkhtmltopdf和wkhtmltoimage就是这样来的,至于字体文件可以从原宿主机上拷贝出来。
本地构建用于编译wkhtmltopdf的镜像可能比较慢,大佬已经将构建好的镜像传到docker hub上了,看这里。步骤如下
https://github.com/aantonw/docker-alpine-wkhtmltopdf-patched-qt

docker pull aantonw/alpine-wkhtmltopdf-patched-qt
docker run -d --name wkhtmltopdf aantonw/alpine-wkhtmltopdf-patched-qt
docker cp wkhtmltopdf:/bin/wkhtmltopdf wkhtmltopdf
docker cp wkhtmltopdf:/bin/wkhtmltoimage wkhtmltoimage

最后完整版的Dockerfile

FROM php:7.2.24-fpm-alpine
# 更改为阿里的镜像源
RUN  sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories

# install unpatched wkhtmltopdf
RUN apk add --no-cach wkhtmltopdf
# replace binary and lib 
COPY wkhtmltopdf /usr/bin/wkhtmltopdf
COPY wkhtmltoimage /usr/bin/wkhtmltoimage
# 拷贝宋体字体文件
COPY ./wkhtmltopdf/fonts/simsun.ttc /usr/share/fonts/simsun.ttc