cloudnet-compose/worker/Dockerfile.j
Sebastiaan van Stijn 8b6432d58d
Optimize java-worker image
This patch optimizes the java-worker image;

- Use multi-stage build to separate the build-stage from the "deploy" stage
- Switch to the official Maven image, instead of manual installation of Maven.
  The official Maven image is also based on the `openjdk` repository on Docker
  Hub, which replaces the (now deprecated) `java` repository.
- Use `COPY` instead of `ADD` to follow best-practice
- Add `-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap` arguments
  so that JAVA will take memory-limits into account
- Use a JRE base image for the final build-stage

This change brings the size of the final image down from 184MB to 87MB

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-01-04 12:39:17 +01:00

18 lines
473 B
Docker

FROM maven:3.5-jdk-8-alpine AS build
WORKDIR /code
COPY pom.xml /code/pom.xml
RUN ["mvn", "dependency:resolve"]
RUN ["mvn", "verify"]
# Adding source, compile and package into a fat jar
COPY ["src/main", "/code/src/main"]
RUN ["mvn", "package"]
FROM openjdk:8-jre-alpine
COPY --from=build /code/target/worker-jar-with-dependencies.jar /
CMD ["java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-jar", "/worker-jar-with-dependencies.jar"]