############### # BUILDER IMAGE FROM python:3.10-slim as builder ARG GITLAB_USER ARG GITLAB_ACCESS_TOKEN ARG PYPI_REGISTRY_RESEARCH=https://gitlab.knecon.com/api/v4/groups/19/-/packages/pypi ARG POETRY_SOURCE_REF_RESEARCH=gitlab-research ARG PYPI_REGISTRY_RED=https://gitlab.knecon.com/api/v4/groups/12/-/packages/pypi ARG POETRY_SOURCE_REF_RED=gitlab-red ARG PYPI_REGISTRY_FFORESIGHT=https://gitlab.knecon.com/api/v4/groups/269/-/packages/pypi ARG POETRY_SOURCE_REF_FFORESIGHT=gitlab-fforesight ARG VERSION=dev LABEL maintainer="Research " LABEL version="${VERSION}" WORKDIR /app ########### # ENV SETUP ENV PYTHONDONTWRITEBYTECODE=true ENV PYTHONUNBUFFERED=true ENV POETRY_HOME=/opt/poetry ENV PATH="$POETRY_HOME/bin:$PATH" RUN apt-get update && \ apt-get install -y curl git bash build-essential libffi-dev libssl-dev && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* RUN curl -sSL https://install.python-poetry.org | python3 - RUN poetry --version COPY pyproject.toml poetry.lock ./ RUN poetry config virtualenvs.create true && \ poetry config virtualenvs.in-project true && \ poetry config installer.max-workers 10 && \ poetry config repositories.${POETRY_SOURCE_REF_RESEARCH} ${PYPI_REGISTRY_RESEARCH} && \ poetry config http-basic.${POETRY_SOURCE_REF_RESEARCH} ${GITLAB_USER} ${GITLAB_ACCESS_TOKEN} && \ poetry config repositories.${POETRY_SOURCE_REF_RED} ${PYPI_REGISTRY_RED} && \ poetry config http-basic.${POETRY_SOURCE_REF_RED} ${GITLAB_USER} ${GITLAB_ACCESS_TOKEN} && \ poetry config repositories.${POETRY_SOURCE_REF_FFORESIGHT} ${PYPI_REGISTRY_FFORESIGHT} && \ poetry config http-basic.${POETRY_SOURCE_REF_FFORESIGHT} ${GITLAB_USER} ${GITLAB_ACCESS_TOKEN} && \ poetry install --without=dev,docs,test -vv --no-interaction --no-root ################## # COPY SOURCE CODE COPY ./config ./config COPY ./src ./src ############### # WORKING IMAGE FROM python:3.10-slim # COPY BILL OF MATERIALS (BOM) COPY bom.json /bom.json # COPY SOURCE CODE FROM BUILDER IMAGE COPY --from=builder /app /app WORKDIR /app ENV PATH="/app/.venv/bin:$PATH" ############ # NETWORKING EXPOSE 5000 EXPOSE 8080 ################ # LAUNCH COMMAND CMD [ "python", "src/serve.py"]