diff --git a/Dockerfile.model b/Dockerfile.model new file mode 100644 index 0000000..21658f4 --- /dev/null +++ b/Dockerfile.model @@ -0,0 +1,53 @@ +# 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,model + +# 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 + +# add code while changing ownership +WORKDIR $APP_HOME +COPY ./shared ./shared +COPY ./model/src ./ + +ENTRYPOINT [ "python", "main.py" ] diff --git a/model/Dockerfile b/model/Dockerfile deleted file mode 100644 index e69de29..0000000 diff --git a/model/docker-compose.server.yml b/model/docker-compose.server.yml new file mode 100644 index 0000000..d33fd9b --- /dev/null +++ b/model/docker-compose.server.yml @@ -0,0 +1,11 @@ +services: + vcda_model: + image: vcda_model:test + container_name: vcda_model_alone + build: + context: ../ + dockerfile: ./Dockerfile.model + env_file: + - ../server.env + environment: + - ENV=TEST