# syntax=docker/dockerfile:1 # Keep the compiler base stable so that runtime-only updates reuse the Nuitka layer. FROM python:3.12-trixie@sha256:ef1735ee20f31133880795148379e68f8fe12f4b7a1872075477567f022edc1f AS builder WORKDIR /build RUN apt-get update \ && apt-get install -y --no-install-recommends \ ccache \ gcc \ g++ \ libmariadb-dev \ make \ patch \ patchelf \ python3-dev \ && rm -rf /var/lib/apt/lists/* COPY upstream/HubBackend/requirements.txt upstream/HubBackend/makefile ./ COPY upstream/HubBackend/src ./src COPY upstream/HubBackend/config_sample.json upstream/HubBackend/openapi.json ./ COPY docker/client-config.patch ./docker/client-config.patch RUN patch -p1 < docker/client-config.patch # Compile the binaries from the backend source code. Cache the build data. RUN --mount=type=cache,target=/root/.cache/pip \ --mount=type=cache,target=/root/.cache/ccache \ make install-python \ && make -j"$(nproc)" build FROM debian:trixie-slim AS runtime RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates iproute2 \ && rm -rf /var/lib/apt/lists/* \ && groupadd --system --gid 10001 drivershub \ && useradd --system --uid 10001 --gid drivershub --home-dir /app drivershub WORKDIR /app COPY --from=builder --chown=drivershub:drivershub /build/dist/ ./ COPY --from=builder --chown=drivershub:drivershub /build/src/external_plugins/ ./external_plugins/ COPY --chown=root:root docker/entrypoint.sh /usr/local/bin/drivershub-entrypoint USER drivershub EXPOSE 7777 8700 ENTRYPOINT ["drivershub-entrypoint"] CMD ["drivershub", "--config", "/app/config/config.json", "--banner-service-url", "http://bannergen:8700/banner"]