Skip to content

Instantly share code, notes, and snippets.

@pdudits
Last active February 27, 2020 15:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pdudits/c2eafaff92f2139f1ed5b67ea71f733a to your computer and use it in GitHub Desktop.
Save pdudits/c2eafaff92f2139f1ed5b67ea71f733a to your computer and use it in GitHub Desktop.
CDS-enabled Payara Micro docker image
FROM azul/zulu-openjdk-alpine:11.0.6
ENV PAYARA_HOME=/opt/payara
# Create and set the Payara user and working directory owned
# by the new user
RUN addgroup payara && \
adduser -D -h ${PAYARA_HOME} -H -s /bin/bash payara -G payara && \
echo payara:payara | chpasswd && \
mkdir -p ${PAYARA_HOME} && \
chown -R payara:payara ${PAYARA_HOME}
USER payara
WORKDIR ${PAYARA_HOME}
COPY payara-micro.jar ${PAYARA_HOME}/payara-micro.jar
COPY app.war ${PAYARA_HOME}
# 1. Create micro-root/launch-payara.jar
RUN java -jar payara-micro.jar --rootdir micro-root --outputlauncher && \
# 2. payara-micro.jar is not needed anymore
rm ${PAYARA_HOME}/payara-micro.jar && \
# 3. Deploy the application, and collect classes to put
# into CDS archive
java -XX:DumpLoadedClassList=classes.lst \
-jar micro-root/launch-micro.jar \
--deploy app.war:/ --warmup && \
# 4. Create CDS archive payara.jsa
java -Xshare:dump -XX:SharedClassListFile=classes.lst \
-XX:SharedArchiveFile=payara.jsa \
-jar micro-root/launch-micro.jar && \
# 5. Cleanup - application is already in root directory
rm -rf classes.lst app.war
# Productive run, no explicit deployment necessary
ENTRYPOINT ["java", "-XX:MaxRAMPercentage=90.0", \
"-Xshare:on", "-XX:SharedArchiveFile=payara.jsa", \
"-jar", "micro-root/launch-micro.jar"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment