# Stage 1: Build FROM python:3.11-slim as builder WORKDIR /app # Copy requirements.txt COPY requirements.txt . # Install dependencies RUN pip install --no-cache-dir -r requirements.txt # Copy everything COPY app app # Stage 2: Production FROM python:3.11-slim as production WORKDIR /app # Copy installed modules from the builder stage COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages # Install playwright dependencies RUN python -m playwright install-deps && \ # Clean up rm -f /usr/lib/x86_64-linux-gnu/libmfxhw* /usr/lib/x86_64-linux-gnu/mfx/* && \ # Create non-root user useradd --home-dir /app --shell /bin/sh zaws && \ chown -R zaws:zaws . # Switch to non-root user USER zaws # Installfirefox inside non-root # Do not install firefox in root to avoid permission error otherwise you need to give zaws permission to access installation path RUN python -m playwright install firefox # Copy application code from the builder stage COPY --from=builder /app /app # Run application CMD ["python", "app/main.py"]