mirror of
https://github.com/migatu/conjurer.git
synced 2026-07-14 21:38:38 +00:00
docker: dedicated musician entrypoint + fuller runbook section
- docker/entrypoint.musician.sh: on a fresh /data volume, create the managed playlists and touch radio_log.log/persistence.log empty so the track-forwarding thread waits instead of crashing when Liquidsoap runs elsewhere; never overwrites preserved files - Dockerfile.musician: wire the entrypoint, default CONJURER_MUSICIAN_BASE =/data (persist playlists/logs) and CONJURER_STREAM_TEMPLATE=/app/stream.html; declare the /data volume - DOCKER_PROXMOX.md: expand the musician section (two volumes, preserving existing playlists, radio-log coupling, stream template) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -17,14 +17,19 @@ RUN pip install --no-cache-dir --upgrade pip \
|
||||
&& pip install --no-cache-dir -r requirements_musician.txt
|
||||
|
||||
COPY conjurer_musician/ ./
|
||||
COPY docker/entrypoint.musician.sh /usr/local/bin/entrypoint.sh
|
||||
RUN chmod +x /usr/local/bin/entrypoint.sh
|
||||
|
||||
ENV PYTHONUNBUFFERED=1 \
|
||||
CONJURER_MUSICIAN_HOST=0.0.0.0 \
|
||||
CONJURER_MUSICIAN_PORT=5000 \
|
||||
CONJURER_MUSIC_FOLDER=/music
|
||||
CONJURER_MUSIC_FOLDER=/music \
|
||||
CONJURER_MUSICIAN_BASE=/data \
|
||||
CONJURER_STREAM_TEMPLATE=/app/stream.html
|
||||
|
||||
# The mp3 library is mounted here (read-only is fine for serving).
|
||||
VOLUME ["/music"]
|
||||
# /music = the mp3 library (read-only ok); /data = writable playlists + logs.
|
||||
VOLUME ["/music", "/data"]
|
||||
EXPOSE 5000
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
CMD ["python", "conjurer_musician.py"]
|
||||
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
# Prepare the musician's writable volume so the web service starts cleanly on a
|
||||
# fresh container. Existing files are never overwritten (preserves your data).
|
||||
set -e
|
||||
|
||||
DATA="${CONJURER_MUSICIAN_BASE:-/data}"
|
||||
MUSIC="${CONJURER_MUSIC_FOLDER:-/music}"
|
||||
mkdir -p "$DATA" "$DATA/logs" "$MUSIC"
|
||||
|
||||
# The track-forwarding thread tails the Liquidsoap radio logs. When the radio
|
||||
# runs separately (or hasn't started yet) these files may not exist; create
|
||||
# them empty so the tailer waits instead of crashing.
|
||||
for f in radio_log.log persistence.log; do
|
||||
[ -e "$DATA/$f" ] || : > "$DATA/$f"
|
||||
done
|
||||
|
||||
# Ensure the managed playlists exist (routes/rescan also create them; this just
|
||||
# avoids a first-tick race before the initial scan).
|
||||
for f in all_playlist.playlist hit.playlist request.playlist priority_queue.playlist; do
|
||||
[ -e "$DATA/$f" ] || : > "$DATA/$f"
|
||||
done
|
||||
|
||||
exec "$@"
|
||||
Reference in New Issue
Block a user