79 lines
2.2 KiB
Docker
79 lines
2.2 KiB
Docker
###############
|
|
# 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 <research@knecon.com>"
|
|
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"]
|