From 7bcb0c65787725a7de7f43a91fd2a2c3d6ea175b Mon Sep 17 00:00:00 2001
From: Gael Abadin <gael.abadin@inverid.com>
Date: Wed, 7 Feb 2024 15:11:11 +0100
Subject: [PATCH] Build docker image from bookworm so arm64 builds are
 available for any version

---
 hello-payara-world-test/pom.xml               | 23 ++++++++----
 .../test/resources/dockerfiles/entrypoint.sh  |  2 +-
 .../resources/dockerfiles/payara.Dockerfile   | 35 ++++++++++++++++---
 3 files changed, 47 insertions(+), 13 deletions(-)

diff --git a/hello-payara-world-test/pom.xml b/hello-payara-world-test/pom.xml
index 041c0ab..5c64480 100644
--- a/hello-payara-world-test/pom.xml
+++ b/hello-payara-world-test/pom.xml
@@ -104,13 +104,22 @@
                         </goals>
                         <configuration>
                             <artifactItems>
-                            <artifactItem>
-                                <groupId>org.postgresql</groupId>
-                                <artifactId>postgresql</artifactId>
-                                <version>42.7.0</version>
-                                <overWrite>false</overWrite>
-                                <outputDirectory>${project.basedir}/target/test-classes/dockerfiles</outputDirectory>
-                            </artifactItem>
+                                <artifactItem>
+                                    <groupId>fish.payara.distributions</groupId>
+                                    <artifactId>payara</artifactId>
+                                    <version>${payara.version}</version>
+                                    <type>zip</type>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.basedir}/target/test-classes/dockerfiles</outputDirectory>
+                                    <destFileName>payara.zip</destFileName>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>org.postgresql</groupId>
+                                    <artifactId>postgresql</artifactId>
+                                    <version>42.7.0</version>
+                                    <overWrite>false</overWrite>
+                                    <outputDirectory>${project.basedir}/target/test-classes/dockerfiles</outputDirectory>
+                                </artifactItem>
                             </artifactItems>
                         </configuration>
                     </execution>
diff --git a/hello-payara-world-test/src/test/resources/dockerfiles/entrypoint.sh b/hello-payara-world-test/src/test/resources/dockerfiles/entrypoint.sh
index 02f075c..2d83a2f 100644
--- a/hello-payara-world-test/src/test/resources/dockerfiles/entrypoint.sh
+++ b/hello-payara-world-test/src/test/resources/dockerfiles/entrypoint.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 if [ -f /tmp/firstrun ]; then
-    echo "deploy /opt/payara/hello.ear" >> "first_run_post_boot_commands"
+    echo "deploy /opt/payara6/hello.ear" >> "first_run_post_boot_commands"
     asadmin start-domain -v --postbootcommandfile=first_run_post_boot_commands
     rm /tmp/firstrun
 else
diff --git a/hello-payara-world-test/src/test/resources/dockerfiles/payara.Dockerfile b/hello-payara-world-test/src/test/resources/dockerfiles/payara.Dockerfile
index 7f913e8..15c86c6 100644
--- a/hello-payara-world-test/src/test/resources/dockerfiles/payara.Dockerfile
+++ b/hello-payara-world-test/src/test/resources/dockerfiles/payara.Dockerfile
@@ -1,13 +1,37 @@
-FROM payara/server-full:${payara.version}-jdk17
+FROM debian:bookworm
 
 # Ports being exposed
 EXPOSE 8080
 EXPOSE 8181
 
+USER root
+
+RUN apt update && \
+    apt -y upgrade && \
+    apt -y install wget unzip less openjdk-17-jre-headless
+
 ENV PAYARA_VERSION=${payara.version}
+
+ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
+
+# Set environment variables for payara
+ENV PAYARA_HOME=/opt/payara6
+
+COPY payara.zip .
+RUN unzip -o payara.zip -d /opt && \
+    rm -f payara.zip
+
+# Setup payara
+RUN mkdir $PAYARA_HOME/.iddocserver &&\
+    useradd -d $PAYARA_HOME payara && \
+    chown -R payara:payara /opt
+
+ENV PATH=$PATH:$PAYARA_HOME/bin
+
 # Set payara admin password
 ENV PAYARA_PASSWORD=changeme
-USER root
+ENV MEM_MAX_RAM_PERCENTAGE=80
+ENV MEM_XSS=1024k
 RUN echo "AS_ADMIN_PASSWORD=${PAYARA_PASSWORD}" > /tmp/glassfishpwd
 RUN chown -R payara:payara /opt
 RUN chown -R payara:payara /tmp/glassfishpwd
@@ -19,8 +43,9 @@ RUN touch /tmp/firstrun && chown payara:payara /tmp/firstrun
 COPY entrypoint.sh /entrypoint.sh
 RUN chmod +x /entrypoint.sh
 USER payara
-COPY domain.xml /opt/payara/appserver/glassfish/domains/domain1/config/
-COPY *.jar /opt/payara/appserver/glassfish/domains/domain1/lib/
-COPY hello.ear /opt/payara/hello.ear
+WORKDIR $PAYARA_HOME
+COPY domain.xml $PAYARA_HOME/glassfish/domains/domain1/config/
+COPY *.jar $PAYARA_HOME/glassfish/domains/domain1/lib/
+COPY hello.ear $PAYARA_HOME/hello.ear
 
 ENTRYPOINT ["/entrypoint.sh"]