FROM 483193324480.dkr.ecr.us-east-1.amazonaws.com/eclipse-temurin:11-jdk-jammy as maven
USER root
RUN apt-get update \
	&& DEBIAN_FRONTEND=noninteractive apt-get install maven \
    --no-install-recommends -y

FROM maven as dependencies

RUN mkdir /app
WORKDIR /app

# leverage docker caching by preparing dependencies
COPY ./pom.xml /app/pom.xml
# build all dependencies for offline use
RUN mvn dependency:go-offline -B

FROM dependencies as build

COPY . /app
RUN /usr/bin/mvn package
ENTRYPOINT [ "/bin/sh" ]

FROM 483193324480.dkr.ecr.us-east-1.amazonaws.com/eclipse-temurin:11-jdk-jammy as main

ARG APP
ARG PACKAGE
ARG SERVICE_PORT
ARG GCP_CREDENTIALS_FILE
ARG DD_VERSION
ARG SENTRY_RELEASE
ARG REVISION

LABEL com.datadoghq.tags.version=${DD_VERSION}

ENV DD_VERSION=${DD_VERSION}
ENV SENTRY_RELEASE=${SENTRY_RELEASE}
ENV REVISION=${REVISION}

# Fallback for missing env vars set in terraform
ENV GCP_CREDENTIALS_FILE_DEFAULT "/app/external-bigtable-reader.json"
ENV GCP_CREDENTIALS_FILE ${GCP_CREDENTIALS_FILE:-$GCP_CREDENTIALS_FILE_DEFAULT}
ENV GOOGLE_APPLICATION_CREDENTIALS ${GOOGLE_APPLICATION_CREDENTIALS:-$GCP_CREDENTIALS_FILE}

RUN mkdir /app \
	&& apt-get update \
	&& apt-get install sudo awscli jq sudo bash wget --no-install-recommends -y \
	&& wget -O /app/dd-java-agent.jar 'https://dtdg.co/latest-java-tracer'

COPY bin/* /app/bin/
COPY --from=build /app/target/*.jar /app/delphi-api-service.jar

ENV APP_USER=sme APP_GROUP=sme
ENV ROOT_USER=root ROOT_GROUP=root

RUN addgroup --system ${APP_GROUP} -gid 1000 \
    && adduser --system ${APP_USER} --ingroup ${APP_GROUP} -uid 1000 --home /app \
	&& chown -R ${APP_USER}:${APP_GROUP} /app

USER ${APP_USER}
WORKDIR /app

EXPOSE ${SERVICE_PORT}

CMD ["/app/bin/entrypoint.sh"]

FROM dependencies as test

RUN apt-get update \
	&& DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends -y install \
		ca-certificates \
		curl \
		gnupg \
	&& install -m 0755 -d /etc/apt/keyrings \
	&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
	&& chmod a+r /etc/apt/keyrings/docker.gpg \
	&& echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null \
	&& apt-get update \
	&& DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends -y install docker-ce-cli containerd.io

WORKDIR /app

ENTRYPOINT [ "/bin/sh" ]
