FROM 086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:lambda-python311 AS base

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

COPY    --from=public.ecr.aws/datadog/lambda-extension:76 /opt/. /opt/

ENV     POETRY_NO_INTERACTION=1 \
        POETRY_VIRTUALENVS_IN_PROJECT=1 \
        POETRY_VIRTUALENVS_CREATE=1 \
        POETRY_CACHE_DIR=/tmp/poetry_cache \
        VIRTUAL_ENV=/poetry \
        PYTHONPATH=/poetry/lib/python3.11/site-packages \
        PATH=/poetry/bin:$PATH

USER    root

# Install poetry
RUN     --mount=type=cache,target=/root/.cache/pip \
            python -m venv $VIRTUAL_ENV /poetry && \
            /poetry/bin/pip install --upgrade pip setuptools && \
            /poetry/bin/pip install poetry==2.4.1

WORKDIR /var/task

# Install app
COPY    README.md pyproject.toml poetry.lock ./
RUN     --mount=type=cache,target=$POETRY_CACHE_DIR \
          poetry install --without dev --no-root

#################################
### Build image for unit-lint ###
#################################
FROM    base AS unit-lint

# Additionally install test dependencies
RUN     --mount=type=cache,target=$POETRY_CACHE_DIR \
          poetry install --only=dev --no-root

# And install app
COPY    config.py lint-and-test.sh ./
COPY    src/ ./src
COPY    tests/ ./tests

USER    worker
ENTRYPOINT [ "/var/task/lint-and-test.sh" ]


##############################
### Build image for deploy ###
##############################
FROM base AS deploy

RUN     yum -y remove gcc && \
             rm -rf poetry.lock pyproject.toml README.md

COPY    src/ ./src
COPY    config.py ./

EXPOSE  8080

USER    worker
ENV     DD_LAMBDA_HANDLER=src.app.handler
CMD     [ "datadog_lambda.handler.handler" ]


########################################
### Build image for integration-test ###
########################################
FROM    unit-lint AS integration-test

COPY    integration-test.sh ./

USER    worker
ENTRYPOINT  [ "/var/task/integration-test.sh" ]
