Files
linux-voice-assistant/examples/ReSpeaker 2mic HAT/Dockerfile
T
Omar Amin 2d460b6728 Leds and buttons events (#266)
Use events and commands to control custom onboard leds and buttons. Can be used to communicate with an external Python script via a WebSocket API running in a container alongside LVA.
2026-07-03 19:58:45 +03:00

65 lines
2.6 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FROM python:3.13-slim-trixie
ENV LANG=C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
LABEL \
org.opencontainers.image.title="ReSpeaker 2-Mic Pi HAT Peripheral Controller" \
org.opencontainers.image.description="LED and button controller for ReSpeaker 2-Mic Pi HAT, communicating with Linux Voice Assistant" \
org.opencontainers.image.source="https://github.com/OHF-Voice/linux-voice-assistant"
# ----------------------------------------------------------------------------
# System packages
#
# The lgpio Python package wraps the system liblgpio C library, which is
# not in Debian's repos (Raspberry Pi OS ships it, upstream Debian does
# not). On aarch64 with no prebuilt wheel we compile the C library from
# source and then build the Python bindings against it.
#
# build-essential compiles the lgpio C library, spidev, and the
# Python lgpio extension
# python3-dev Python C headers for the Python lgpio extension
# swig generates the Python lgpio bindings at build time
# git clones the lgpio C library source
# ----------------------------------------------------------------------------
RUN apt-get update && \
apt-get install --yes --no-install-recommends \
build-essential \
python3-dev \
swig \
git \
ca-certificates && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Build and install the lgpio C library so the lgpio Python package can
# link against it. Pinned to a tagged release (v0.2.2) for reproducibility.
RUN git clone --depth 1 --branch v0.2.2 https://github.com/joan2937/lg.git /tmp/lg && \
cd /tmp/lg && make && make install && ldconfig && \
rm -rf /tmp/lg
WORKDIR /app
# ----------------------------------------------------------------------------
# Python dependencies
#
# websockets – WebSocket client for LVA peripheral API
# spidev – low-level SPI access for APA102 LEDs
# gpiozero – GPIO button input (Pi 3/4/5 compatible)
# lgpio – gpiozero backend; works on Pi 3/4/5 including Pi 5
# ----------------------------------------------------------------------------
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY respeaker_2mic_hat.py ./
# Make /app writable by the runtime user. lgpio creates notification
# files (.lgd-nfy-N) in the process working directory at startup, and
# compose runs this container as a non root user for device access.
# The default root owned /app blocks lgpio from initialising, which
# makes gpiozero fall through every pin factory.
RUN chmod a+w /app
ENTRYPOINT ["python3", "respeaker_2mic_hat.py"]
CMD []