diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..6796ee0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.git +.github +.gradle +bin +target +build diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ce94849 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +FROM amazoncorretto:17-al2-jdk + +# Create a user +RUN yum update -y && \ + yum install -y shadow-utils && \ + yum clean all && \ + rm -rf /var/cache/dnf +RUN groupadd -r appuser && \ + useradd -m -r -g appuser appuser +USER appuser + +WORKDIR /app/ +RUN chown -R appuser:appuser /app + +# Install Gradle +COPY --chown=appuser:appuser ./gradle/ /app/gradle/ +COPY --chown=appuser:appuser ./gradlew /app/ +RUN ./gradlew --version --no-daemon + +# Install dependencies +COPY --chown=appuser:appuser ./build.gradle ./settings.gradle /app/ +RUN ./gradlew dependencies --no-daemon + +# Build project +COPY --chown=appuser:appuser . /app/ +RUN ./gradlew build shadowJar --no-daemon + +# Disable building a JAR because we already built it. +ENV SHADOW=No diff --git a/README.md b/README.md index 153b36e..76167a8 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,20 @@ If you wish to run _all_ benchmarks used to generate the reports above, you can run `./run-everything`. This will take several hours to complete, so be patient. +## Run on Docker + +You can use Docker if you wish to reproduce the consistent environment +or to run benchmarks in a separate safe environment. + +Prerequisites: + +* Docker + +Build and run: + + docker build -t java-json-benchmark:latest . + docker run --rm -it java-json-benchmark:latest ./run deser + ## Run on AWS Prerequisites: