FROM ghcr.io/astral-sh/uv:0.9.26 AS uv

# Base stage with common dependencies
FROM 086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:python314 AS base

USER root

RUN apt-get update \
    && apt-get -y upgrade \
    && rm -rf /var/lib/apt/lists/*

USER worker

# Enable bytecode compilation, to improve cold-start performance.
ENV UV_COMPILE_BYTECODE=1

# Disable installer metadata, to create a deterministic layer.
ENV UV_NO_INSTALLER_METADATA=1

# Enable copy mode to support bind mount caching.
ENV UV_LINK_MODE=copy

# Copy uv binary
COPY --from=uv --chown=worker:worker /uv /bin/uv

WORKDIR /var/app

COPY --chown=worker:worker pyproject.toml uv.lock ./

# Install dependencies
RUN --mount=type=cache,uid=1010,gid=1010,mode=755,target=/home/worker/.cache/uv \
    uv sync --frozen --dev

# Copy application code
COPY --chown=worker:worker common ./common
COPY --chown=worker:worker tests ./tests
COPY --chown=worker:worker lint-and-test.sh ./

ENTRYPOINT ["./lint-and-test.sh"]
