# https://stackoverflow.com/a/57374374/2798461 ####################################################################################################################### FROM python:3.13-alpine AS dist ENV PYTHONUNBUFFERED=1 RUN apk update # Configure Poetry ENV POETRY_VERSION=2.1.1 ENV POETRY_HOME=/opt/poetry ENV POETRY_VENV=/opt/poetry-venv ENV POETRY_CACHE_DIR=/opt/.cache # Install poetry separatedly from system interpreter RUN python3 -m venv $POETRY_VENV \ && $POETRY_VENV/bin/pip install -U pip setuptools \ && $POETRY_VENV/bin/pip install poetry==${POETRY_VERSION} # Add `poetry` to PATH ENV PATH="${PATH}:${POETRY_VENV}/bin" ####################################################################################################################### FROM dist AS building WORKDIR /app # Install dependencies COPY pyproject.toml ./ COPY README.md /app/README.md COPY pygateway /app/pygateway RUN cat pyproject.toml | grep -v package-mode > pyproject.toml2 RUN rm pyproject.toml RUN mv pyproject.toml2 pyproject.toml RUN poetry --version RUN poetry lock RUN poetry install ####################################################################################################################### FROM building AS runner # COPY pygateway /app/pygateway ENV PYTHONPATH=/app WORKDIR /app ARG PORT_TO_LISTEN ARG REMOTE_HOST ARG REMOTE_PORT ARG ALLOWED_CLIENT_IP ENV PORT_TO_LISTEN=${PORT_TO_LISTEN} ENV REMOTE_HOST=${REMOTE_HOST} ENV REMOTE_PORT=${REMOTE_PORT} ENV ALLOWED_CLIENT_IP=${ALLOWED_CLIENT_IP} RUN echo "poetry run python3 -m pygateway" > run.sh RUN chmod u+x run.sh ENTRYPOINT [ "sh", "run.sh" ]