node.js 应用程序在基于 alpine 的 docker 容器中运行。
我想使用 npm 包easy-pdf-merge
(很清楚它的作用,对吗?),它在后台调用 Java lib Apache PDFBox
(二进制文件与 npm 包一起到达),因此必须在容器中安装 java。
我使用以下命令安装 java:
RUN apk --no-cache --update add openjdk8
(PDFBox 需要 6+,并且在所有版本 6-11 中,安装 8 时,安装的依赖项最少 - 104 mb)
安装了以下软件包:
(1/38) Installing libffi (3.2.1-r6)
(2/38) Installing p11-kit (0.23.18.1-r0)
(3/38) Installing libtasn1 (4.15.0-r0)
(4/38) Installing p11-kit-trust (0.23.18.1-r0)
(5/38) Installing ca-certificates (20191127-r2)
(6/38) Installing java-cacerts (1.0-r0)
(7/38) Installing nspr (4.24-r0)
(8/38) Installing sqlite-libs (3.30.1-r2)
(9/38) Installing nss (3.48-r0)
(10/38) Installing libxau (1.0.9-r0)
(11/38) Installing libbsd (0.10.0-r0)
(12/38) Installing libxdmcp (1.1.3-r0)
(13/38) Installing libxcb (1.13.1-r0)
(14/38) Installing libx11 (1.6.12-r0)
(15/38) Installing libxcomposite (0.4.5-r0)
(16/38) Installing libxext (1.3.4-r0)
(17/38) Installing libxi (1.7.10-r0)
(18/38) Installing libxrender (0.9.10-r3)
(19/38) Installing libxtst (1.2.3-r3)
(20/38) Installing alsa-lib (1.2.1.2-r0)
(21/38) Installing libbz2 (1.0.8-r1)
(22/38) Installing libpng (1.6.37-r1)
(23/38) Installing freetype (2.10.1-r0)
(24/38) Installing giflib (5.2.1-r0)
(25/38) Installing libjpeg-turbo (2.0.4-r1)
(26/38) Installing openjdk8-jre-lib (8.252.09-r0)
(27/38) Installing java-common (0.2-r0)
(28/38) Installing krb5-conf (1.0-r1)
(29/38) Installing libcom_err (1.45.5-r0)
(30/38) Installing keyutils-libs (1.6.1-r0)
(31/38) Installing libverto (0.3.1-r1)
(32/38) Installing krb5-libs (1.17.1-r0)
(33/38) Installing lcms2 (2.9-r1)
(34/38) Installing pcsc-lite-libs (1.8.25-r2)
(35/38) Installing liblksctp (1.0.18-r1)
(36/38) Installing openjdk8-jre-base (8.252.09-r0)
(37/38) Installing openjdk8-jre (8.252.09-r0)
(38/38) Installing openjdk8 (8.252.09-r0)
我假设我的任务不需要所有这些包(将 pdf-ok 粘贴到一个文件中)。我假设 sqlite-libs 和 ca-certificates 可以被拆除并减小图像的大小。我对一切都会继续工作吗?
但大多数包都有非人类可读的名称。请告诉我在不影响主要任务的情况下也可以拆除的包裹。
openjdk8-jre-lib (8.252.09-r0)
openjdk8-jre-base (8.252.09-r0)
openjdk8-jre (8.252.09-r0)
openjdk8 (8.252.09-r0)
这真的也是你需要的吗?我们可以只说其中一个包吗?(如果最后一个问题很明显,我在 java 0 中很抱歉)
在不影响pdf的情况下,我认为你可以删除
但我建议您查看launch4j - 构建一个用于启动程序的迷你环境,而无需安装系统java。
我尝试添加到java安装命令
不幸的是,他们回答我:
PS 我们设法将图像的大小减小了 20 mb,方法是将其替换
openjdk8
为openjdk8-jre
:)PPS Java PDFBox 与 Python PyPDF2 和显然是 sish PDFtk 相比具有无可置疑的优势,即无需移除大脑即可安装它。但是,我仍然不想将图像的大小增加 2 倍,因为有时我们需要将多个 PDF 粘贴到一个中。所以我找到了一个替代方案 -
qpdf
,它在所有 alpina 存储库中,占用空间很小。