Skip to content
Snippets Groups Projects
Dockerfile 2.3 KiB
Newer Older
ThanKarab's avatar
ThanKarab committed
#######################################################
# Build the spring boot maven project
#######################################################
FROM maven:3.8.5-openjdk-11 as mvn-build-env
ThanKarab's avatar
ThanKarab committed
ENV CODE_PATH="/opt/code"
WORKDIR $CODE_PATH
ThanKarab's avatar
ThanKarab committed
COPY pom.xml $CODE_PATH
ThanKarab's avatar
ThanKarab committed
RUN mvn clean compile test
ThanKarab's avatar
ThanKarab committed
COPY src/ $CODE_PATH/src
ThanKarab's avatar
ThanKarab committed
RUN mvn clean package
ThanKarab's avatar
ThanKarab committed
#######################################################
# Setup the running container
#######################################################
FROM openjdk:11.0.15-jdk
MAINTAINER Thanasis Karampatsis <tkarabatsis@athenarc.gr>
ThanKarab's avatar
ThanKarab committed
#######################################################
# Setting up timezone
#######################################################
ENV TZ=Etc/GMT
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ThanKarab's avatar
ThanKarab committed
#######################################################
# Setting up env variables and workdir
#######################################################
ENV APP_CONFIG_TEMPLATE="/opt/config/application.tmpl" \
    APP_CONFIG_LOCATION="/opt/config/application.yml" \
    SPRING_CONFIG_LOCATION="file:/opt/config/application.yml"
ThanKarab's avatar
ThanKarab committed
WORKDIR /opt
ThanKarab's avatar
ThanKarab committed
#######################################################
# Install dockerize
#######################################################
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
Ludovic Claude's avatar
Ludovic Claude committed

ThanKarab's avatar
ThanKarab committed
#######################################################
# Prepare the spring boot application files
#######################################################
COPY /config/application.tmpl $APP_CONFIG_TEMPLATE
COPY --from=mvn-build-env /opt/code/target/portal-backend.jar /usr/share/jars/


#######################################################
# Volume for the backend config files
#######################################################
VOLUME /opt/portal/api
ThanKarab's avatar
ThanKarab committed

ENTRYPOINT ["sh", "-c", "dockerize -template $APP_CONFIG_TEMPLATE:$APP_CONFIG_LOCATION java -Daeron.term.buffer.length -jar /usr/share/jars/portal-backend.jar"]
EXPOSE 8080
HEALTHCHECK --start-period=60s CMD curl -v --silent http://localhost:8080/services/actuator/health 2>&1 | grep UP