Какие пакеты можно снести?
Приложение на node.js запускается в docker контейнере на основе alpine.
Хочу использовать npm пакет easy-pdf-merge (понятно что он делает, да?), который под капотом вызывает джававскую либу Apache PDFBox (бинарник прилетает с npm пакетом), и поэтому в контейнере должна быть установлена java.
Ставлю джаву следующей командой:
RUN apk --no-cache --update add openjdk8
(PDFBox требует 6+, а из всех версий 6-11 при установке 8 ставится меньше всего зависимостей - 104 мб)
При этом ставятся следующие пакеты:
(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)
Я предполагаю, что все эти пакеты конкретно для моей задачи (склейка пдф-ок в один файл) не нужны. Предполагаю что 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)
А это точно тоже всё нужно? Можно оставить скажем только 1 из этих пакетов? (я в джаве 0 так что извините если последний вопрос очевидный)
Ответы (2 шт):
Без ущерба для pdf думаю можно удалить
alsa-lib libxcb libx11 libxcomposite sqlite-libs nspr p11-kit-trust krb5-conf liblksctp pcsc-lite-libs krb5-libs p11-kit liblksctp keyutils-libs
но я бы посоветовал посмотреть на launch4j -собрать мини окружение для запуска програмки не прибегая к установки системной явы.
Попробовал к команде установки джавы добавить
&& apk del ca-certificates java-cacerts sqlite-libs giflib
К сожалению мне ответили:
World updated, but the following packages are not removed due to:
ca-certificates: java-cacerts
openjdk8-jre-base openjdk8-jre
openjdk8
java-cacerts: openjdk8-jre-base openjdk8-jre
openjdk8
sqlite-libs: nss openjdk8-jre-base openjdk8-jre
openjdk8
giflib: openjdk8-jre openjdk8
P.S. удалось уменьшить размер образа на 20 мб заменив openjdk8 на openjdk8-jre :)
P.P.S. джававский PDFBox имеет несомненные преимущества перед питоновским PyPDF2 и видимо-сишным PDFtk, а именно ставится без выноса мозга. Но все же не хочется увеличивать размер образа в 2 раза из-за того что иногда нам надо склеить несколько пдф-ок в одну. Так что я нашел альтернативу - qpdf, который есть во всех репозиториях альпины и занимает мало места.