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