diff --git a/.launch/Dockerfile_base b/.launch/Dockerfile_base index 7d13e54..fd967e6 100644 --- a/.launch/Dockerfile_base +++ b/.launch/Dockerfile_base @@ -1,52 +1,40 @@ # Build stage -ARG PYTHON_VERSION=3.12.11 -FROM python:${PYTHON_VERSION}-slim AS builder +FROM python:3.12-slim AS builder ENV PYTHONDONTWRITEBYTECODE=1 -ENV PYTHONUNBUFFERED=1 - WORKDIR /app -# Install build dependencies -RUN apt-get update && apt-get install -y \ - build-essential \ - && rm -rf /var/lib/apt/lists/* - -# Install poetry -RUN pip install --no-cache-dir poetry +# Install build tools and poetry +RUN apt-get update && apt-get install -y build-essential \ + && rm -rf /var/lib/apt/lists/* \ + && pip install --no-cache-dir poetry -# Copy dependency files +# Install dependencies COPY pyproject.toml poetry.lock ./ - -# Configure poetry and install dependencies RUN poetry config virtualenvs.create false \ && poetry install --no-root --only=main # Production stage -ARG PYTHON_VERSION=3.12 -FROM python:${PYTHON_VERSION}-slim +FROM python:3.12-slim ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV PYTHONPATH=/app -# Install runtime dependencies only -RUN apt-get update && apt-get install -y \ - libpq5 \ - && rm -rf /var/lib/apt/lists/* \ - && apt-get clean +# Install runtime dependencies +RUN apt-get update && apt-get install -y libpq5 \ + && rm -rf /var/lib/apt/lists/* WORKDIR /app -# Get Python version for dynamic path -ARG PYTHON_VERSION=3.12 -ENV PYTHON_SITE_PACKAGES=/usr/local/lib/python${PYTHON_VERSION}/site-packages - -# Copy installed packages from builder stage -COPY --from=builder ${PYTHON_SITE_PACKAGES} ${PYTHON_SITE_PACKAGES} +# Copy Python packages and binaries from builder +COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages COPY --from=builder /usr/local/bin /usr/local/bin # Copy application code COPY src/ ./src/ COPY alembic.ini ./ +# Clean any cache files (safety backup) +RUN find ./src -name "*.pyc" -delete 2>/dev/null || true +