# Stage 1: build and install dependencies FROM python:3.11-slim AS builder WORKDIR /app COPY pyproject.toml uv.lock ./ RUN pip install --no-cache-dir uv && uv sync --frozen --no-dev --no-install-project # Stage 2: runtime (slim, no build toolchain) FROM python:3.11-slim AS runtime WORKDIR /app COPY --from=builder /app/.venv ./.venv ENV PATH="/app/.venv/bin:$PATH" # Copy application COPY main.py ./ # Create non-root user RUN useradd -m modbus && chown -R modbus:modbus /app USER modbus EXPOSE 5020 CMD ["python", "main.py"]