ARG AWS_ACCOUNT=086679231553

# Build from parent image and install Maven
FROM --platform=linux/amd64 ${AWS_ACCOUNT}.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:java17 AS builder

WORKDIR /build

# Install Maven
USER root
RUN apt-get update \
    && apt-get install -y --no-install-recommends maven \
    && rm -rf /var/lib/apt/lists/*

# Copy Maven wrapper and project files
COPY mvnw mvnw.cmd pom.xml settings.xml ./
COPY .mvn .mvn
COPY src ./src

# Copy local jars and install them into the local Maven repo
COPY oauth2-util-4.6.2-ngd.jar .

RUN mkdir -p /root/.m2 && cp settings.xml /root/.m2/settings.xml

# Install the local jars first, then build
# Running as root in builder stage
RUN --mount=type=cache,target=/root/.m2/repository \
    --mount=type=secret,id=GITHUB_USERNAME,required=true \
    --mount=type=secret,id=GITHUB_TOKEN,required=true \
    export GITHUB_USERNAME=$(cat /run/secrets/GITHUB_USERNAME) && \
    export GITHUB_TOKEN=$(cat /run/secrets/GITHUB_TOKEN) && \
    ./mvnw -q install:install-file \
    -Dfile=oauth2-util-4.6.2-ngd.jar \
    -DgroupId=com.sonymusic \
    -DartifactId=oauth2-util \
    -Dversion=4.6.2-ngd \
    -Dpackaging=jar \
    && ./mvnw clean package -DskipTests -B

# Stage 2: Runtime stage uses non-root
FROM --platform=linux/amd64 ${AWS_ACCOUNT}.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:java17

LABEL parent-images=java17,dx-ui-service
LABEL service=dx-ui-service

WORKDIR /app

# Copy built artifact from builder stage (use Maven artifact name)
# pom.xml: artifactId=dx-ui-service, version=0.0.1-SNAPSHOT
COPY --from=builder /build/target/dx-ui-service-0.0.1-SNAPSHOT.jar /app/dx-ui-service.jar

# Download Datadog Java APM agent for distributed tracing
USER root
RUN apt-get update && apt-get install -y curl && \
    curl -Lo /app/dd-java-agent.jar https://dtdg.co/latest-java-tracer && \
    chown worker:worker /app/dd-java-agent.jar && \
    rm -rf /var/lib/apt/lists/*

USER worker

# Use Datadog Java agent with the application
CMD ["java", "-javaagent:/app/dd-java-agent.jar", "-jar", "/app/dx-ui-service.jar"]

EXPOSE 8080
