59 lines
1.6 KiB
Docker
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" ] |