FROM public.ecr.aws/lambda/python:3.11 # Postgres host/port/database are baked into the image at build time from # the deploy workflow's --build-arg values (GitHub Actions DEV_DB_* secrets), # mirroring applications/postcode_splitter/Dockerfile. They map onto the # POSTGRES_* names PostgresConfig.from_env reads. Username/password are NOT # baked in -- Terraform injects those as Lambda env vars from Secrets Manager. ARG DEV_DB_HOST ARG DEV_DB_PORT ARG DEV_DB_NAME ENV POSTGRES_HOST=${DEV_DB_HOST} ENV POSTGRES_PORT=${DEV_DB_PORT} ENV POSTGRES_DATABASE=${DEV_DB_NAME} WORKDIR /var/task COPY applications/ara_first_run/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Copy the layered source the handler imports from. DDD-shaped packages only — # no pandas, no legacy backend/. COPY domain/ domain/ COPY infrastructure/ infrastructure/ COPY orchestration/ orchestration/ COPY repositories/ repositories/ COPY utilities/ utilities/ # domain.property.site_notes -> datatypes.epc.domain.epc_property_data; without # this the lambda fails at init with "No module named 'datatypes'". COPY datatypes/ datatypes/ COPY applications/ applications/ # Place the handler at the Lambda task root so the runtime can resolve # ``main.handler`` without an extra package prefix. COPY applications/ara_first_run/handler.py /var/task/main.py CMD ["main.handler"]