From d5a1125b6b86e1fe4e8fb6819b69b985cae70f84 Mon Sep 17 00:00:00 2001 From: Mole Shang <135e2@135e2.dev> Date: Sun, 12 May 2024 22:35:11 +0800 Subject: merge #95 --- Dockerfile | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile index 2694202..4e18bd9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,33 @@ -FROM flyingjoe/uvicorn-gunicorn-fastapi:python3.9-slim - -WORKDIR /app - -ENV PATH="${PATH}:/root/.local/bin" - -ADD . /app/ - -EXPOSE 20000 - -RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list && rm -Rf /var/lib/apt/lists/* && apt-get update - -RUN apt install curl -y - -RUN curl -sSL https://install.python-poetry.org | python3 - - -RUN /usr/local/bin/python -m pip install --no-cache-dir --upgrade --quiet pip - +FROM sunpeek/poetry:py3.10-slim as base +# python +ENV PYTHONUNBUFFERED=1 \ + # prevents python creating .pyc files + PYTHONDONTWRITEBYTECODE=1 \ + \ + POETRY_VERSION=1.1.4 \ + # make poetry install to this location + POETRY_HOME="/opt/poetry" \ + POETRY_VIRTUALENVS_IN_PROJECT=true \ + POETRY_NO_INTERACTION=1 \ + \ + # paths + # this is where our requirements + virtual environment will live + PYSETUP_PATH="/opt/pysetup" \ + VENV_PATH="/opt/pysetup/.venv" + +# prepend poetry and venv to path +ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH" + +FROM base as base-builder +WORKDIR $PYSETUP_PATH +ADD ./poetry.lock ./pyproject.toml ./ RUN poetry install +FROM base as pre-production +EXPOSE 20000 +COPY --from=base-builder $VENV_PATH /app/.venv/ +COPY . /app/ VOLUME /app/accounts /app/data +WORKDIR /app CMD poetry run python3 main.py \ No newline at end of file -- cgit v1.2.3