Предварительно подогретое Java Docker изображение с классом обмена данными - PullRequest
0 голосов
/ 23 марта 2020

Я хочу создать образ docker, который запускается на службе Java с функцией обмена данными класса OpenJ9 для повышения производительности при запуске. Я хочу создать Class Cache при создании образа с помощью многоступенчатой ​​docker сборки. Я видел несколько упоминаний о предварительном прогреве docker изображения, как это онлайн

https://github.com/barecode/adopt-openj9-spring-boot/blob/master/Dockerfile.openj9.warmed

однако я не могу его воссоздать, вот мой Dockerfile

FROM adoptopenjdk/openjdk11-openj9:alpine as base
ADD libs/ /libs
ADD service.jar /service.jar

RUN mkdir /hi
WORKDIR /hi
RUN ls /
RUN java -Xshareclasses:name=mycache -Xshareclasses:cacheDir=/hi -Xshareclasses -jar /usr/share/app/service.jar &
RUN sleep 5
RUN ls -la /hi
FROM adoptopenjdk/openjdk11-openj9:alpine-jre
COPY --from=base libs/ /usr/share/app/libs
COPY --from=base service.jar /usr/share/app/service.jar

RUN /bin/sh -c 'ps aux | grep java | grep service | awk '{print $2}' | xargs kill -1'
#RUN java -Xshareclasses:listAllCaches
ENTRYPOINT ["java","-jar", "-Xshareclasses" , "-Xtune:virtualized", "-XX:+UseContainerSupport", "/usr/share/app/service.jar"]

Моя проблема в том, что когда я запускаю

RUN java -Xshareclasses:name=mycache -Xshareclasses:cacheDir=/hi -Xshareclasses -jar /usr/share/app/service.jar &

, а затем ожидаю, что файл кэша будет сохранен в / hi, его там нет.

любая помощь будет оценена. Спасибо.

...