# syntax=docker/dockerfile:1.7

########################
### Build base image ###
########################
ARG         AWS_ACCOUNT=086679231553

FROM        ${AWS_ACCOUNT}.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:lambda-python313 AS base

ARG version
LABEL Version=$version
ENV build_version=$version

# Install uv
COPY        --from=ghcr.io/astral-sh/uv:0.8.13 /uv /uvx /bin/

# Setup env variables
# Lambda doesn't use virtual envs, so we install to system Python
ENV         UV_LINK_MODE=copy \
            UV_PROJECT_ENVIRONMENT=/var/lang

USER        root
WORKDIR     /var/task

####################################
### Build image for dependencies ###
####################################
FROM        base AS builder

# Install build dependencies (only in builder stage)
RUN         dnf -y install gcc && \
            dnf clean all

# Copy dependency files
COPY        --link uv.lock pyproject.toml ./

# Install dependencies using uv
RUN         --mount=type=cache,target=/root/.cache/uv \
            --mount=type=cache,target=/root/.cache/pip \
            uv sync --frozen --no-default-groups --no-install-project

##############################
### Final production image ###
##############################
FROM        base AS deps

# Copy Datadog extension
COPY        --from=public.ecr.aws/datadog/lambda-extension:82 /opt/. /opt/

# Copy compiled dependencies from builder (without gcc)
COPY        --from=builder /var/lang/lib/python3.13/site-packages /var/lang/lib/python3.13/site-packages

##############################
### Build production image ###
##############################
FROM        deps AS production

# Copy application code
COPY        file_upload_complete/ ./file_upload_complete/
COPY        config.py ./
COPY        app.py ./

# Fix permissions for Lambda runtime
RUN chmod -R 755 /var/task

EXPOSE 8080

ENV DD_LAMBDA_HANDLER=app.handler
CMD [ "datadog_lambda.handler.handler" ]
