From 91ef9311973a539aaf8ec2d878959f36b4980dee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Erik=20Hedenstr=C3=B6m?= <erik@hedenstroem.com>
Date: Thu, 7 Apr 2022 15:58:28 +0200
Subject: [PATCH] Fixed java performance issue by switching to alpine based jdk

---
 test/docker/docker-compose.yml           |  4 ++--
 test/docker/dropwizard/Dockerfile.alpine | 30 ++++++++++++++++++++++++
 test/docker/java/Dockerfile.alpine       | 18 ++++++++++++++
 3 files changed, 50 insertions(+), 2 deletions(-)
 create mode 100644 test/docker/dropwizard/Dockerfile.alpine
 create mode 100644 test/docker/java/Dockerfile.alpine

diff --git a/test/docker/docker-compose.yml b/test/docker/docker-compose.yml
index 954a166..f890a76 100644
--- a/test/docker/docker-compose.yml
+++ b/test/docker/docker-compose.yml
@@ -20,7 +20,7 @@ services:
     restart: unless-stopped
     build: 
       context: java
-      dockerfile: Dockerfile
+      dockerfile: Dockerfile.alpine
     volumes:
       - faketime:/var/lib/faketime
   dropwizard:
@@ -29,7 +29,7 @@ services:
     restart: unless-stopped
     build: 
       context: dropwizard
-      dockerfile: Dockerfile
+      dockerfile: Dockerfile.alpine
     volumes:
       - faketime:/var/lib/faketime
     ports:
diff --git a/test/docker/dropwizard/Dockerfile.alpine b/test/docker/dropwizard/Dockerfile.alpine
new file mode 100644
index 0000000..79ea5e2
--- /dev/null
+++ b/test/docker/dropwizard/Dockerfile.alpine
@@ -0,0 +1,30 @@
+##
+## Build
+##
+FROM maven:3-openjdk-17-slim AS mvn
+COPY . /usr/src/build
+WORKDIR /usr/src/build
+RUN mvn package
+
+FROM openjdk:17-alpine AS faketime
+RUN apk update
+RUN apk upgrade
+RUN apk add bash git build-base
+RUN git clone -b 'v0.9.10' --single-branch --depth 1 https://github.com/wolfcw/libfaketime.git
+RUN cd /libfaketime/src && make install
+
+##
+## Deploy
+##
+FROM openjdk:17-alpine
+COPY --from=faketime /usr/local/lib/faketime /usr/local/lib/faketime
+ENV LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
+ENV FAKETIME_DONT_RESET=1
+ENV FAKETIME_CACHE_DURATION=1
+ENV FAKETIME_DONT_FAKE_MONOTONIC=1
+ENV FAKETIME_TIMESTAMP_FILE=/var/lib/faketime/faketimerc
+COPY --from=mvn /usr/src/build/target/faketime-demo-1.0-SNAPSHOT.jar /faketime-demo.jar
+EXPOSE 8080
+EXPOSE 8081
+ENTRYPOINT ["java", "-jar", "/faketime-demo.jar"]
+CMD [ "server" ]
diff --git a/test/docker/java/Dockerfile.alpine b/test/docker/java/Dockerfile.alpine
new file mode 100644
index 0000000..81ce617
--- /dev/null
+++ b/test/docker/java/Dockerfile.alpine
@@ -0,0 +1,18 @@
+FROM openjdk:17-alpine AS faketime
+RUN apk update
+RUN apk upgrade
+RUN apk add bash git build-base
+RUN git clone -b 'v0.9.10' --single-branch --depth 1 https://github.com/wolfcw/libfaketime.git
+RUN cd /libfaketime/src && make install
+
+FROM openjdk:17-alpine
+COPY --from=faketime /usr/local/lib/faketime /usr/local/lib/faketime
+ENV LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
+ENV FAKETIME_DONT_RESET=1
+ENV FAKETIME_CACHE_DURATION=1
+ENV FAKETIME_DONT_FAKE_MONOTONIC=1
+ENV FAKETIME_TIMESTAMP_FILE=/var/lib/faketime/faketimerc
+WORKDIR /root
+COPY Main.java /root/
+RUN javac Main.java
+CMD java Main
-- 
GitLab