我有一个现有的php:8-fpm-alpine Dockerfile,我需要添加WKHTMLTOPDF包。这可能吗。我尝试使用以下dockerfile,但我得到以下错误日志:
Dockerfile。。。
FROM php:8-fpm-alpine
...
RUN apk add xvfb libfontconfig wkhtmltopdf
错误:
ERROR [ 8/13] RUN apk add --no-cache wkhtmltopdf 2.1s
[ 8/13] RUN apk add --no-cache wkhtmltopdf:
#12 0.567 fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/main/x86_64/APKINDEX.tar.gz
#12 1.097 fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/community/x86_64/APKINDEX.tar.gz
#12 2.001 ERROR: unable to select packages:
#12 2.034 wkhtmltopdf (no such package):
#12 2.034 required by: world[wkhtmltopdf]
executor failed running [/bin/sh -c apk add --no-cache wkhtmltopdf]: exit code: 1
ERROR: Service 'php' failed to build : Build failed
我尝试包含以下存储库中的内容,但我认为这对一个包来说太多了,而且在构建过程中会中断:https://github.com/alloylab/Docker-Alpine-wkhtmltopdf
如有任何帮助,我们将不胜感激。
我在尝试更新到php:8.1.9-fpm-alpine3.16
时遇到了同样的问题
为了实现这一点,我添加了一个链接到wkhtmltopdf的社区3.14存储库。事实证明,它也有一些来自主存储库的依赖项:
ERROR: unable to select packages:
so:libicui18n.so.67 (no such package):
required by: qt5-qtwebkit-5.212.0_alpha4-r14[so:libicui18n.so.67]
so:libicuuc.so.67 (no such package):
required by: qt5-qtwebkit-5.212.0_alpha4-r14[so:libicuuc.so.67]
所以你需要添加
# Install packages not yet updated for the current alpine version TODO remove when no longer needed
RUN echo 'https://dl-cdn.alpinelinux.org/alpine/v3.14/community' >> /etc/apk/repositories
RUN echo 'https://dl-cdn.alpinelinux.org/alpine/v3.14/main' >> /etc/apk/repositories
RUN apk add --no-cache wkhtmltopdf
我在php:7.4-fpm-alpine
图像方面遇到了类似的问题。
wkhtmltopdf
似乎在Alpine 3.15版本中缺失,但在3.14版本中可用。
尝试更改
FROM php:8-fpm-alpine
至
FROM php:8-fpm-alpine3.14
我使用surnet/alpine wkhtmltopdf图像的现代方法
目标:
- 使用最新的高山(此处为3.17(
- 使用最新的php(此处为8.2(
- 无论如何都有wkhtmltopdf
- 不包括旧存储库
Dockerfile:
FROM surnet/alpine-wkhtmltopdf:3.16.2-0.12.6-full as wkhtmltopdf
FROM php:8.2-fpm-alpine3.17 AS app
# wkhtmltopdf install dependencies
RUN apk add --no-cache
libstdc++
libx11
libxrender
libxext
libssl1.1
ca-certificates
fontconfig
freetype
ttf-droid
ttf-freefont
ttf-liberation
# more fonts
;
# wkhtmltopdf copy bins from ext image
COPY --from=wkhtmltopdf /bin/wkhtmltopdf /bin/libwkhtmltox.so /bin/
# install php extensions, apache/nginx etc.
- 您可以控制
alpine-wkhtmltopdf
图像的版本 - 您可以控制php和alpine的版本
- 如果需要,您可以下载更多字体
部分基于手动