From 8c5b58ebf3a0f52227e6b61aa9770b8c54a14e88 Mon Sep 17 00:00:00 2001 From: Brian Bjarke Jensen Date: Tue, 21 May 2024 08:11:41 +0200 Subject: [PATCH] added new dockerfile in root dir --- Dockerfile.web_ui | 58 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Dockerfile.web_ui diff --git a/Dockerfile.web_ui b/Dockerfile.web_ui new file mode 100644 index 0000000..1cb4942 --- /dev/null +++ b/Dockerfile.web_ui @@ -0,0 +1,58 @@ +# build stage +FROM python:3.12-slim-bookworm as BUILDER + +# set environment variables +ENV PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + PIP_NO_CACHE_DIR=off \ + PIP_DISABLE_PIP_VERSION_CHECK=ON \ + PIP_DEFAULT_TIMEOUT=100 \ + DEBIAN_FRONTEND=noninteractive \ + POETRY_HOME=/etc/poetry \ + POETRY_VERSION=1.7.1 \ + POETRY_VIRTUALENVS_IN_PROJECT=1 \ + POETRY_VIRTUALENVS_CREATE=1 \ + POETRY_NO_INTERACTION=1 \ + POETRY_CACHE_DIR=/tmp/poetry_cache \ + APP_HOME=/home/app + +# update system +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + build-essential \ + curl \ + && apt-get clean + +# install poetry +RUN curl -sSL https://install.python-poetry.org | python3 - +ENV PATH="${POETRY_HOME}/bin:$PATH" + +# install runtime dependencies +WORKDIR ${APP_HOME} +COPY ./poetry.lock ./pyproject.toml ./ +RUN --mount=type=cache,target=${POETRY_CACHE_DIR} poetry install \ + --with shared,web_ui + +# final stage +FROM python:3.12-slim-bookworm + +# copy virtualenv made by poetry +ENV APP_HOME=/home/app \ + VIRTUAL_ENV=/home/app/.venv +COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV} +ENV PATH="${VIRTUAL_ENV}/bin:${PATH}" + +# create home directory and app user +RUN mkdir -p /home/app && \ + addgroup --system app && \ + adduser --system --group app + +# add code while changing ownership +WORKDIR $APP_HOME +COPY --chown=app:app ./shared ./shared +COPY --chown=app:app ./web_ui/src ./src + +# change to the app user +USER app + +ENTRYPOINT [ "gunicorn", "src.main:server", "-b", "0.0.0.0:8050" ]