summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Dockerfile46
1 files changed, 28 insertions, 18 deletions
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