Skip to content
Snippets Groups Projects
Dockerfile 2.01 KiB
Newer Older
# Build stage for Java classes
FROM hbpmip/java-base-build:3.6.0-jdk-11-0 as java-build-env

COPY pom.xml /project/

RUN cp /usr/share/maven/ref/settings-docker.xml /root/.m2/settings.xml \
    && mvn clean compile test
COPY src/ /project/src/

# Repeating the file copy works better. I dunno why.
RUN cp /usr/share/maven/ref/settings-docker.xml /root/.m2/settings.xml \
    && mvn clean package

FROM hbpmip/java-base:11.0.1-1
RUN rm -rf /var/lib/apt/lists/* /tmp/*
COPY docker/config/application.tmpl /opt/portal/config/application.tmpl
COPY docker/README.md docker/run.sh /opt/portal/

RUN addgroup portal \
    && adduser --system --disabled-password --uid 1000 --ingroup portal portal \
    && chmod +x /opt/portal/run.sh \
    && ln -s /opt/portal/run.sh /run.sh \
    && chown -R portal:portal /opt/portal

COPY --from=java-build-env /project/target/portal-backend.jar /usr/share/jars/
ARG BUILD_DATE
ARG VCS_REF
ARG VERSION
ENV APP_NAME="Portal backend" \
    APP_TYPE="Spring" \
    VERSION=$VERSION \
    BUILD_DATE=$BUILD_DATE \
    CONTEXT_PATH="/services" \
    BUGSNAG_KEY="dff301aa15eb795a6d8b22b600586f77"
Ludovic Claude's avatar
Ludovic Claude committed

WORKDIR /home/portal
# 8080: Web service API, health checks on http://host:8080$CONTEXT_PATH/health
EXPOSE 8080
HEALTHCHECK --start-period=60s CMD curl -v --silent http://localhost:8080$CONTEXT_PATH/health 2>&1 | grep UP

LABEL org.label-schema.build-date=$BUILD_DATE \
      org.label-schema.name="hbpmip/portal-backend" \
      org.label-schema.description="Spring backend for the MIP portal" \
      org.label-schema.url="https://mip.humanbrainproject.eu" \
      org.label-schema.vcs-type="git" \
      org.label-schema.vcs-url="https://github.com/HBPMedical/portal-backend" \
Ludovic Claude's avatar
Ludovic Claude committed
      org.label-schema.vcs-ref=$VCS_REF \
      org.label-schema.version="$VERSION" \
      org.label-schema.vendor="LREN CHUV" \
      org.label-schema.license="AGPLv3" \
      org.label-schema.docker.dockerfile="Dockerfile" \
      org.label-schema.memory-hint="2048" \
      org.label-schema.schema-version="1.0"