ba3e172dda
Mosquitto: - Change restart: always (was unless-stopped) to survive daemon restarts - Add healthcheck (pub/sub ping) for depends_on conditions - All downstream services use condition: service_healthy Party-lock: - Add MQTT connection retry loop (was crashing on DNS race after restart) Zigbee2mqtt: - Add entrypoint wrapper that auto-applies BLZ bridge patch at startup - Bridge patch no longer needs manual 'just z2m-patch-bridge' after image pulls Mopidy: - Add python3-gi + python3-gi-cairo via apt (fixes 'No module named gi') - Set PYTHONPATH to expose system gi module to Python 3.12
47 lines
1.2 KiB
Docker
47 lines
1.2 KiB
Docker
# Mopidy music server with Qobuz + local files
|
|
# Builds from python:3.12-slim + pip (no ghcr.io dependency)
|
|
|
|
FROM python:3.12-slim-bookworm
|
|
|
|
# System deps for mopidy + extensions + GStreamer playback + PyGObject
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
gstreamer1.0-tools \
|
|
gstreamer1.0-plugins-good \
|
|
gstreamer1.0-plugins-bad \
|
|
gstreamer1.0-plugins-ugly \
|
|
libcairo2 \
|
|
libpango-1.0-0 \
|
|
libpangoft2-1.0-0 \
|
|
libgirepository-1.0-1 \
|
|
gir1.2-glib-2.0 \
|
|
gir1.2-gstreamer-1.0 \
|
|
gir1.2-gst-plugins-base-1.0 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
python3-gi \
|
|
python3-gi-cairo \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Expose the system Python's gi module to Python 3.12 (/usr/local).
|
|
ENV PYTHONPATH=/usr/lib/python3/dist-packages:${PYTHONPATH}
|
|
|
|
RUN pip install --no-cache-dir \
|
|
"setuptools<80" \
|
|
Mopidy==3.4.2 \
|
|
Mopidy-Qobuz \
|
|
Mopidy-Local
|
|
|
|
# Default config (overridable via bind mount)
|
|
COPY mopidy.conf /config/mopidy.conf
|
|
|
|
VOLUME ["/var/lib/mopidy", "/music"]
|
|
EXPOSE 6680
|
|
|
|
# Run as the unprivileged "mopidy" user from python base
|
|
USER nobody
|
|
|
|
CMD ["mopidy", "--config", "/config/mopidy.conf"]
|