1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # Dockerfile from https://github.com/python-poetry/poetry/discussions/1879
- # `python-base` sets up all our shared environment variables
- FROM python:3.9.5-slim as python-base
- ENV PYTHONUNBUFFERED=1 \
- # prevents python creating .pyc as files
- PYTHONDONTWRITEBYTECODE=1 \
- \
- # pip
- PIP_NO_CACHE_DIR=off \
- PIP_DISABLE_PIP_VERSION_CHECK=on \
- PIP_DEFAULT_TIMEOUT=100 \
- \
- # poetry
- # https://python-poetry.org/docs/configuration/#using-environment-variables
- POETRY_VERSION=1.6.1 \
- # make poetry install to this location
- POETRY_HOME="/opt/poetry" \
- # make poetry create the virtual environment in the project's root
- # it gets named `.venv`
- POETRY_VIRTUALENVS_IN_PROJECT=true \
- # do not ask any interactive question
- POETRY_NO_INTERACTION=1 \
- \
- # paths
- # this is where our requirements + virtual environment will live
- PYSETUP_PATH="/opt/pysetup" \
- VENV_PATH="/opt/pysetup/.venv" \
- # Hikka
- DOCKER=true \
- GIT_PYTHON_REFRESH=quiet
- # prepend poetry and venv to path
- ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH"
- # `builder-base` stage is used to build deps + create our virtual environment
- FROM python-base as builder-base
- RUN apt-get update && apt-get install --no-install-recommends -y \
- # deps for installing poetry
- curl \
- # deps for building python deps
- build-essential
- # install poetry - respects $POETRY_VERSION & $POETRY_HOME
- RUN curl -sSL https://install.python-poetry.org | python -
- # copy project requirement files here to ensure they will be cached.
- WORKDIR $PYSETUP_PATH
- COPY poetry.lock pyproject.toml ./
- # install runtime deps - uses $POETRY_VIRTUALENVS_IN_PROJECT internally
- RUN poetry install --no-dev
- # `production` image used for runtime
- FROM python-base as production
- COPY --from=builder-base $PYSETUP_PATH $PYSETUP_PATH
- WORKDIR /data/Hikka
- COPY . /data/Hikka
- EXPOSE 8080
- CMD python -m hikka
|