2025-03-16 22:59:25 +03:00

59 lines
1.6 KiB
Docker

# 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" ]