Sign inSign up

hivemindsdk/core

By hivemindsdk

•Updated 10 months ago

Core image with some debug tools, Python3 runtime libs, support for atomic operations and GStreamer

Image
0

10K+

hivemindsdk/core repository overview

The provided images are built from the below Dockerfile

1.0.0

# ubuntu 20.04 focal fossa
ARG BASE_IMAGE=ubuntu:focal-20230624
FROM ${BASE_IMAGE}

# ARG doesn't persist in subsequent images
ARG DEBIAN_FRONTEND=noninteractive
RUN echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes

# Install all apt packages that would be required by any example
RUN apt update && apt install -y gdb gdbserver python3 python3-dev libatomic1

1.1.0

# ubuntu 20.04 focal fossa
ARG BASE_IMAGE=ubuntu:focal-20230624
FROM ${BASE_IMAGE}

# ARG doesn't persist in subsequent images
ARG DEBIAN_FRONTEND=noninteractive
RUN echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes

# Install all apt packages that would be required by any example
RUN apt update && apt install -y gdb gdbserver python3 python3-dev python3-pip libatomic1 ca-certificates

# Upgrade pip for examples that install Python packages
RUN python3 -m pip install --upgrade pip

You can build them locally by running

# For Ubuntu 20.04
docker build --platform linux/arm64/v8,linux/amd64 -t docker.io/hivemindsdk/core:1.0.0-ubuntu20.04 .
# For Ubuntu 22.04
docker build --build-arg BASE_IMAGE=ubuntu:jammy-20230624 --platform linux/arm64/v8,linux/amd64 -t docker.io/hivemindsdk/core:1.0.0-ubuntu22.04 .

2.0.0

ARG BASE_IMAGE=ubuntu:jammy-20250530
FROM ${BASE_IMAGE} AS base

# ARG doesn't persist in subsequent images
ARG DEBIAN_FRONTEND=noninteractive
ARG GSTREAMER_VERSION=1.24.3
ARG BUILD_DIR=/tmp/builddir
ENV HM_GST_INSTALL_DIR=/opt/hm-gstreamer-install
RUN echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes

# Install all apt packages that would be required by our examples
RUN apt update \
    && apt install -y \
        # Debugging
        gdb \
        gdbserver \
        # For RL
        python3 \
        python3-dev \
        python3-pip \
        # For ARM
        libatomic1 \
        # For GStreamer
        ca-certificates \
        sudo \
        libglib2.0-dev \
        libdrm-dev \
        gosu \
        jq \
        libunwind8 \
        # Vulkan dependencies
        libvulkan1 \
        mesa-vulkan-drivers \
        vulkan-tools \
        # X11 requirements
        libegl1-mesa-dev \
        libx11-6 \
        libxext6 \
        libxtst6 \
        libx11-xcb-dev \
        libxkbcommon-dev \
        libxrandr-dev \
        libwayland-cursor0 \
        libwayland-egl++0 \
        libwayland-egl1-mesa \
        libwayland-egl1 \
        libxcb-render0 \
        libv4l-0 \
        libva2 \
        libva-drm2 \
        libx264-163 \
        # Network tools
        iproute2 \
        tcpdump \
        iputils-ping \
        net-tools \
        netcat \
        iptables \
        # Video
        ffmpeg \
    && apt clean \
    && rm -rf /var/lib/apt/lists/*

# Upgrade pip for examples that install Python packages
RUN python3 -m pip install --upgrade pip

FROM base AS gst_build

WORKDIR /tmp

RUN apt update \
    && apt upgrade -y \
    && apt install -y \
        build-essential \
        meson \
        ninja-build \
        python3-setuptools \
        git \
        pkg-config \
        bison \
        flex \
    && python3 -m pip install --upgrade meson \
    && apt clean && rm -rf /var/lib/apt/lists/*

RUN git clone --depth 1 https://gitlab.freedesktop.org/gstreamer/gstreamer.git --branch $GSTREAMER_VERSION \
    && cd gstreamer \
    && meson setup $BUILD_DIR \
      -Dgpl=enabled \
      --pkgconfig.relocatable \
      --prefix=$HM_GST_INSTALL_DIR \
    && meson compile -C $BUILD_DIR \
    && meson install -C $BUILD_DIR

FROM base AS gstinstall

COPY --from=gst_build $HM_GST_INSTALL_DIR $HM_GST_INSTALL_DIR

You can build them locally by running

# For Ubuntu 22.04
docker build --build-arg BASE_IMAGE=ubuntu:jammy-20250530 --platform linux/arm64/v8,linux/amd64 --network host -t docker.io/hivemindsdk/core:2.0.0-ubuntu22.04 .

3.0.0

ARG BASE_IMAGE=ubuntu:jammy-20250530
FROM ${BASE_IMAGE} AS base

# ARG doesn't persist in subsequent images
ARG DEBIAN_FRONTEND=noninteractive
ARG GSTREAMER_VERSION=1.24.3
ARG OPENCV_VERSION=4.5.4
ARG BUILD_DIR=/tmp/builddir
ENV HM_GST_INSTALL_DIR=/opt/hm-gstreamer-install
ENV HM_OPENCV_INSTALL_DIR=/opt/hm-opencv-install
RUN echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes

# Install all apt packages that would be required by our examples
RUN apt update \
    && apt install -y \
        # Debugging
        gdb \
        gdbserver \
        # For RL
        python3 \
        python3-dev \
        python3-pip \
        # For ARM
        libatomic1 \
        # For GStreamer
        ca-certificates \
        sudo \
        libglib2.0-dev \
        libdrm-dev \
        gosu \
        jq \
        libunwind8 \
        # Vulkan dependencies
        libvulkan1 \
        mesa-vulkan-drivers \
        vulkan-tools \
        # X11 requirements
        libegl1-mesa-dev \
        libx11-6 \
        libxext6 \
        libxtst6 \
        libx11-xcb-dev \
        libxkbcommon-dev \
        libxrandr-dev \
        libwayland-cursor0 \
        libwayland-egl++0 \
        libwayland-egl1-mesa \
        libwayland-egl1 \
        libxcb-render0 \
        libv4l-0 \
        libva2 \
        libva-drm2 \
        libx264-163 \
        # Network tools
        iproute2 \
        tcpdump \
        iputils-ping \
        net-tools \
        netcat \
        iptables \
        # Video
        ffmpeg \
    && apt clean \
    && rm -rf /var/lib/apt/lists/*

# Upgrade pip for examples that install Python packages
RUN python3 -m pip install --upgrade pip

FROM base AS gst_build

WORKDIR /tmp

RUN apt update \
    && apt upgrade -y \
    && apt install -y \
        build-essential \
        meson \
        ninja-build \
        python3-setuptools \
        git \
        pkg-config \
        bison \
        flex \
    && python3 -m pip install --upgrade meson \
    && apt clean && rm -rf /var/lib/apt/lists/*

RUN git clone --depth 1 https://gitlab.freedesktop.org/gstreamer/gstreamer.git --branch $GSTREAMER_VERSION \
    && cd gstreamer \
    && meson setup $BUILD_DIR \
      -Dgpl=enabled \
      --pkgconfig.relocatable \
      --prefix=$HM_GST_INSTALL_DIR \
    && meson compile -C $BUILD_DIR \
    && meson install -C $BUILD_DIR

FROM base AS final

COPY --from=gst_build $HM_GST_INSTALL_DIR $HM_GST_INSTALL_DIR

# Install only the OpenCV modules that ArUco block actually needs
RUN apt update \
    && apt install -y \
        libopencv-core4.5d \
        libopencv-imgproc4.5d \
        libopencv-imgcodecs4.5d \
        libopencv-calib3d4.5d \
        libopencv-features2d4.5d \
        libopencv-flann4.5d \
        libopencv-contrib4.5d \
    && apt clean && rm -rf /var/lib/apt/lists/* \
    && mkdir -p $HM_OPENCV_INSTALL_DIR \
    && ln -sf /usr $HM_OPENCV_INSTALL_DIR

You can build them locally by running

# For Ubuntu 22.04
docker build --build-arg BASE_IMAGE=ubuntu:jammy-20250530 --platform linux/arm64/v8,linux/amd64 --network host -t docker.io/hivemindsdk/core:3.0.0-ubuntu22.04 .

3.1.0

ARG BASE_IMAGE=ubuntu:jammy-20250530
FROM ${BASE_IMAGE} AS base

# ARG doesn't persist in subsequent images
ARG DEBIAN_FRONTEND=noninteractive
ARG GSTREAMER_VERSION=1.19.1
ARG OPENCV_VERSION=4.5.4
ARG BUILD_DIR=/tmp/builddir

ENV HM_GST_INSTALL_DIR=/opt/hm-gstreamer-install
ENV HM_OPENCV_INSTALL_DIR=/opt/hm-opencv-install

RUN echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes \
    && apt-get update \
    # Install all apt packages that would be required by our examples
    && apt-get install -y \
        ca-certificates \
        ffmpeg \
        gdb \
        gdbserver \
        gosu \
        iproute2 \
        iptables \
        iputils-ping \
        jq \
        libatomic1 \
        libavcodec-dev \
        libavfilter-dev \
        libavformat-dev \
        libdrm-dev \
        libegl1-mesa-dev \
        libfontconfig1-dev \
        libglib2.0-dev \
        libunwind8 \
        libv4l-0 \
        libva-drm2 \
        libva2 \
        libvulkan1 \
        libwayland-cursor0 \
        libwayland-egl++0 \
        libwayland-egl1 \
        libwayland-egl1-mesa \
        libx11-6 \
        libx11-dev \
        libx11-xcb-dev \
        libx264-163 \
        libxcb-render0 \
        libxext-dev \
        libxext6 \
        libxft-dev \
        libxkbcommon-dev \
        libxml2 \
        libxrandr-dev \
        libxrender-dev \
        libxtst6 \
        mesa-vulkan-drivers \
        nasm \
        net-tools \
        netcat \
        python3 \
        python3-dev \
        python3-pip \
        sudo \
        tcpdump \
        vulkan-tools \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    # Upgrade pip for examples that install Python packages
    && python3 -m pip install --upgrade pip

FROM base AS gst_build

WORKDIR /tmp

RUN apt-get update \
    && apt-get upgrade -y \
    && apt-get install -y \
        bison \
        build-essential \
        flex \
        git \
        meson \
        ninja-build \
        pkg-config \
        python3-setuptools \
    && python3 -m pip install --upgrade meson \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

RUN GST_MAJOR_VERSION=$(echo "$GSTREAMER_VERSION" | cut -d. -f1) \
    && GST_MINOR_VERSION=$(echo "$GSTREAMER_VERSION" | cut -d. -f2) \
    && if [ "$GST_MAJOR_VERSION" -le 1 ] && [ "$GST_MINOR_VERSION" -lt 20 ]; then \
            gst_repo=gst-build; \
        else \
            gst_repo=gstreamer; \
        fi \
    && git clone --depth 1 https://gitlab.freedesktop.org/gstreamer/${gst_repo}.git --branch "$GSTREAMER_VERSION" gst

WORKDIR /tmp/gst
RUN GST_MAJOR_VERSION=$(echo "$GSTREAMER_VERSION" | cut -d. -f1) \
    && GST_MINOR_VERSION=$(echo "$GSTREAMER_VERSION" | cut -d. -f2) \
    && if [ "$GST_MAJOR_VERSION" -le 1 ] && [ "$GST_MINOR_VERSION" -lt 20 ]; then \
        version_flags="-Dgst-plugins-bad:mpegtsdemux=enabled -Dlibav=enabled -Dgst-plugins-bad:openh264=enabled"; \
    else \
        version_flags="-Dgpl=enabled"; \
    fi \
    && if [ $(uname -m) != "x86_64" ]; then \
        arch_flags="-Ddevtools=disabled"; \
    fi \
    && meson setup $version_flags $arch_flags --pkgconfig.relocatable --prefix="$HM_GST_INSTALL_DIR" "$BUILD_DIR"

WORKDIR /tmp/gst/subprojects/gst-plugins-bad
COPY opensource/gstreamer_support/klv_demux/gst-plugins-bad/klv_sync_support.patch klv_sync_support.patch
COPY opensource/gstreamer_support/klv_demux/gst-plugins-bad/gst-libs/gst/codecparsers/gstklvmeta.* gst-libs/gst/codecparsers/
RUN git apply klv_sync_support.patch

WORKDIR /tmp/gst/gstreamer
RUN meson compile -C "$BUILD_DIR" && meson install -C "$BUILD_DIR"

FROM base AS final

COPY --from=gst_build $HM_GST_INSTALL_DIR $HM_GST_INSTALL_DIR

# Install only the OpenCV modules that ArUco block actually needs
RUN apt-get update \
    && apt-get install -y \
        libopencv-calib3d4.5d \
        libopencv-contrib4.5d \
        libopencv-core4.5d \
        libopencv-features2d4.5d \
        libopencv-flann4.5d \
        libopencv-imgcodecs4.5d \
        libopencv-imgproc4.5d \
    && apt-get clean && rm -rf /var/lib/apt/lists/* \
    && mkdir -p "$HM_OPENCV_INSTALL_DIR" \
    && ln -sf /usr "$HM_OPENCV_INSTALL_DIR"

You can build them locally by running

# For Ubuntu 22.04
docker build --build-arg BASE_IMAGE=ubuntu:jammy-20250530 --platform linux/arm64/v8,linux/amd64 --network host -t docker.io/hivemindsdk/core:3.1.0-ubuntu22.04 .

Tag summary

Content type

Image

Digest

sha256:2935cf20a…

Size

492.6 MB

Last updated

10 months ago

docker pull hivemindsdk/core:3.2.0-ubuntu22.04