Как добавить дополнительные linux зависимостей в образ сборки пакета spring -boot? - PullRequest
2 голосов
/ 20 июня 2020

Я обновил свое приложение с весенней загрузкой, чтобы использовать пакеты сборки для создания моего docker -образа вместо файла докеров. Я также использую Apache POI в своем приложении, и после этого обновления я получаю сообщение об ошибке при создании файла xlsx. Я думаю, что это происходит из-за отсутствия пакетов fontconfig и / или ttf-dejavu. Но как мне добавить их в dockerimage? С файлом докеров я бы просто добавил что-то вроде

RUN apt-get update && apt-get install fontconfig ttf-dejavu

Но как мне добиться того же с помощью сборочных пакетов?

1 Ответ

1 голос
/ 09 августа 2020

В этом ответе предполагается, что под «... приложением spring -boot для использования пакетов сборки» вы подразумеваете использование цели spring-boot:build-image maven.

Проблема связана с построителем по умолчанию (gcr.io/paketo-buildpacks/builder:base) используется плагином maven. Строитель отвечает за настройку образа ОС, а «базовый» компоновщик не включает пакет fontconfig. .

Самый простой способ включить пакет fontconfig - использовать «полный» конструктор (gcr.io/paketo-buildpacks/builder:full-cf или gcr.io/paketo-buildpacks/builder:latest); вы можете сделать это, например, одним из следующих способов:

  • , указав параметр конфигурации Builder в плагине maven,

    <project>
    <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
               <version>2.3.3.BUILD-SNAPSHOT</version>
               <configuration>
                   <image>
                       <builder>gcr.io/paketo-buildpacks/builder:latest</builder>
                   </image>
               </configuration>
           </plugin>
       </plugins>
    </build>
    </project>
    
  • или прямо в командной строке mvn, добавив -Dspring-boot.build-image.builder=gcr.io/paketo-buildpacks/builder:latest.

Однако это не идеально, потому что полный образ ОС намного больше (примерно 1,45 ГБ для «полного "по сравнению с 644 МБ для" базового "- наблюдается в списке изображений docker), изрядно накладные расходы" только "для включения fontconfig.

Более сложный подход потребует создания настраиваемого компоновщика с настраиваемыми миксинами, чтобы создать индивидуальный «базовый» образ с дополнительными пакетами. Но мне лично было проще просто использовать подход dockerfile в этом сценарии. Некоторые статьи по созданию собственного компоновщика:

...