From 4a06e52f411691dc11d9dede4fa14b63ec80203c Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 18 Jul 2025 16:16:52 +0000 Subject: [PATCH] more minimal --- .../extractor_and_loader/docker/Dockerfile | 43 +++++++++++++------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/deployment/lambda/extractor_and_loader/docker/Dockerfile b/deployment/lambda/extractor_and_loader/docker/Dockerfile index e3fde73..dcbe910 100644 --- a/deployment/lambda/extractor_and_loader/docker/Dockerfile +++ b/deployment/lambda/extractor_and_loader/docker/Dockerfile @@ -1,29 +1,44 @@ -# Start from lightweight base image +# ----------- Build Stage (with Poetry) ----------- +FROM python:3.12-slim as builder + +ENV PIP_NO_CACHE_DIR=1 + +# Install Poetry +RUN pip install poetry + +# Set working directory +WORKDIR /app + +# Copy only what's needed to resolve dependencies +COPY pyproject.toml poetry.lock ./ + +# Export main dependencies only +RUN poetry export -f requirements.txt --without-hashes --only main -o requirements.txt + +# Install dependencies to /python (Lambda expects this path) +RUN pip install --no-deps -r requirements.txt --target /python + + +# ----------- Runtime Stage (Slim and Clean) ----------- FROM python:3.12-slim -# Set environment vars to reduce image size and avoid bytecode ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 -# Install required system packages and Lambda RIC -RUN apt-get update && apt-get install -y curl \ - && pip install awslambdaric \ - && apt-get clean && rm -rf /var/lib/apt/lists/* +# Install Lambda Runtime Interface Client (RIC) +RUN pip install awslambdaric + +# Copy app dependencies from builder +COPY --from=builder /python /var/task # Set working directory WORKDIR /var/task -# Copy Poetry files and export dependencies -COPY pyproject.toml poetry.lock ./ -RUN pip install poetry \ - && poetry export -f requirements.txt --without-hashes --only main -o requirements.txt \ - && pip install -r requirements.txt --target - -# Copy app code +# Copy application code COPY etl/ etl/ COPY deployment/lambda/extractor_and_loader/docker/app.py . # Lambda entrypoint -ENTRYPOINT ["/usr/local/bin/python3", "-m", "awslambdaric"] +ENTRYPOINT ["python3", "-m", "awslambdaric"] CMD ["app.handler"]