# ============================================================================= # proxyDrum — self-contained image # # Copyright (c) 2006 Wizardry and Steamworks # SPDX-License-Identifier: MIT # ============================================================================= # ----------------------------------------------------------------------------- # Stage 1 — builder # ----------------------------------------------------------------------------- FROM python:3.11-slim-bookworm AS builder RUN apt-get update \ && apt-get install -y --no-install-recommends \ build-essential \ gcc \ && rm -rf /var/lib/apt/lists/* ENV VIRTUAL_ENV=/opt/venv RUN python -m venv "${VIRTUAL_ENV}" ENV PATH="${VIRTUAL_ENV}/bin:${PATH}" RUN pip install --no-cache-dir --upgrade pip wheel \ && pip install --no-cache-dir \ "aiohttp>=3.9" \ "structlog>=24.1" # ----------------------------------------------------------------------------- # Stage 2 — runtime # ----------------------------------------------------------------------------- FROM python:3.11-slim-bookworm AS runtime RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ tini \ && rm -rf /var/lib/apt/lists/* ENV VIRTUAL_ENV=/opt/venv COPY --from=builder "${VIRTUAL_ENV}" "${VIRTUAL_ENV}" ENV PATH="${VIRTUAL_ENV}/bin:${PATH}" RUN groupadd --system --gid 10001 proxydrum \ && useradd --system --uid 10001 --gid proxydrum \ --home-dir /app --shell /usr/sbin/nologin proxydrum WORKDIR /app COPY --chown=proxydrum:proxydrum proxydrum.py /app/proxydrum.py USER proxydrum EXPOSE 8080 ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 ENTRYPOINT ["/usr/bin/tini", "--", "python", "/app/proxydrum.py"] CMD ["--listen", "0.0.0.0", "--port", "8080"]