Maven Container to build Spring Boot Microservice package for Docker Container - HaymonEdmur/DockerConfiguration GitHub Wiki

Dockerfile

FROM openjdk:8-jdk-alpine

RUN apk add --no-cache curl tar bash procps

ARG MAVEN_VERSION=3.5.3
ARG USER_HOME_DIR="/root"
ARG SHA=b52956373fab1dd4277926507ab189fb797b3bc51a2a267a193c931fffad8408
ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries

RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
  && curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
  && echo "${SHA}  /tmp/apache-maven.tar.gz" | sha256sum -c - \
  && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
  && rm -f /tmp/apache-maven.tar.gz \
  && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn

ENV MAVEN_HOME /usr/share/maven
ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"

Build docker image

docker build --tag my_local_maven:3.5.2-jdk-8 .

Start Container

Press ^P^Q

docker container run --rm -it --name="MavenPackageBuilder" -v /tmp/clones:/clones my_local_maven:3.5.2-jdk-8 sh

Building a package

Clone your github repository in /tmp/clones

# ls -ld /tmp/clones/loginExample
# docker exec MavenPackageBuilder mvn -f /clones/loginExample clean
# docker exec MavenPackageBuilder mvn -f /clones/loginExample package

Keep Container stateless

Use a volume for .m2