1
# Bare mindsdb with no extras is built as a separate stage for caching
2
FROM python:3.10 as build
3
# "rm ... docker-clean" stops docker from removing packages from our cache
4
# https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/reference.md#example-cache-apt-packages
5
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
6
RUN --mount=target=/var/lib/apt,type=cache,sharing=locked \
7
--mount=target=/var/cache/apt,type=cache,sharing=locked \
8
apt update && apt-get upgrade -y \
9
&& apt-get install -y freetds-dev # freetds required to build pymssql for mssql_handler
14
# Copy just requirements and install them to cache the layer
15
# This won't include any of the default handlers, but it should still speed things up
16
COPY requirements/requirements.txt /mindsdb/requirements/requirements.txt
17
RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements/requirements.txt
20
# Now copy the rest of the code and install it
22
RUN --mount=type=cache,target=/root/.cache/pip pip install "."
25
# Install extras on top of the bare mindsdb
28
RUN --mount=type=cache,target=/root/.cache/pip if [ -n "$EXTRAS" ]; then pip install $EXTRAS; fi
31
# For use in docker-compose
33
# "rm ... docker-clean" stops docker from removing packages from our cache
34
# https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/reference.md#example-cache-apt-packages
35
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
36
RUN --mount=target=/var/lib/apt,type=cache,sharing=locked \
37
--mount=target=/var/cache/apt,type=cache,sharing=locked \
38
apt update && apt-get upgrade -y \
39
&& apt-get install -y libmagic1 libpq5 freetds-bin
40
RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements/requirements-dev.txt
42
COPY docker/mindsdb_config.release.json /root/mindsdb_config.json
50
ENTRYPOINT [ "sh", "-c", "python -m mindsdb --config=/root/mindsdb_config.json --api=http,mysql,mongodb" ]
53
# Copy installed pip packages and install only what we need
55
# "rm ... docker-clean" stops docker from removing packages from our cache
56
# https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/reference.md#example-cache-apt-packages
57
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
58
RUN --mount=target=/var/lib/apt,type=cache,sharing=locked \
59
--mount=target=/var/cache/apt,type=cache,sharing=locked \
60
apt update && apt-get upgrade -y \
61
&& apt-get install -y libmagic1 libpq5 freetds-bin
63
COPY --link --from=extras /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages
64
COPY docker/mindsdb_config.release.json /root/mindsdb_config.json
72
ENTRYPOINT [ "sh", "-c", "python -m mindsdb --config=/root/mindsdb_config.json --api=http,mysql,mongodb" ]