fix: ein fehlendes Laufwerk darf Rippy nicht am Starten hindern
Ampel / ampel (push) Successful in 40s
Ampel / ampel (push) Successful in 40s
WAS: Die `devices:`-Eintraege fliegen aus docker-compose.yml. Was dieser Host wirklich hat, ermittelt deploy/geraete-override.sh und schreibt es in docker-compose.override.yml — die zieht Compose von allein dazu, der Befehl bleibt `docker compose up -d`. WARUM (Vorfall heute, 28.08.2026): Das USB-Laufwerk haengt nicht mehr an der VM. Ein ganz normaler Deploy legte daraufhin api, worker UND ui still: Error response from daemon: error gathering device information while adding custom device "/dev/sr0": no such file or directory Ein `devices:`-Eintrag ist eine STARTBEDINGUNG — und keiner der drei Container braucht zum STARTEN ein Laufwerk. Rippy war unten, und die Meldung stand mitten im Build-Rauschen (dieselbe Klasse wie das geschluckte `|| echo` beim .env-Kopieren am 26.07.). DER WIDERSPRUCH WAR AELTER ALS DER VORFALL: install.sh sagt bei fehlendem Laufwerk ausdruecklich "die Installation laeuft trotzdem durch; diese Maschine dient dann als reine KOMPRIMIER-Maschine" — die Compose-Datei sah das anders. Eine Maschine ohne Laufwerk ist ein VORGESEHENER Betriebsfall: der Windows-Worker und der GPU-Encoder sind genau das. Das Skript uebernimmt die Erkennung aus install.sh unveraendert: sr- und sg-Knoten ueber die SCSI-Adresse in /sys abgeglichen, nicht geraten. Und es schreibt die Override AUCH dann, wenn kein Laufwerk da ist — sonst bliebe eine alte Datei mit /dev/sr0 liegen und der Fehler waere derselbe, nur schwerer zu finden, weil sie gitignored ist und in keinem Diff auftaucht. deploy.sh ruft es vor dem Start auf. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
95705c8d88
commit
05ab655116
+24
-12
@@ -3,7 +3,24 @@
|
||||
# Geräte-Zugriff (22.07./23.07.-Lehre): Optische Laufwerke MÜSSEN als devices:
|
||||
# eingebunden werden. Bind-Mounts unter volumes: geben dem Container zwar den
|
||||
# Geräteknoten, aber KEINE Berechtigung im Device-Cgroup → jedes open() scheitert
|
||||
# mit EPERM. Voraussetzung: Die VM sieht das Laufwerk (USB-Passthrough auf pve).
|
||||
# mit EPERM.
|
||||
#
|
||||
# ⚠️ ABER NICHT HIER (Vorfall 28.08.2026): Ein `devices:`-Eintrag ist eine
|
||||
# STARTBEDINGUNG. Als das USB-Laufwerk von der VM abgezogen wurde, legte ein
|
||||
# ganz normaler Deploy api, worker UND ui still — obwohl keiner der drei zum
|
||||
# Starten ein Laufwerk braucht:
|
||||
#
|
||||
# Error response from daemon: error gathering device information while
|
||||
# adding custom device "/dev/sr0": no such file or directory
|
||||
#
|
||||
# Der Widerspruch war älter: install.sh sagt bei fehlendem Laufwerk
|
||||
# ausdrücklich „läuft trotzdem durch, dann ist das eine reine
|
||||
# KOMPRIMIER-Maschine" — diese Datei sah das anders.
|
||||
#
|
||||
# Deshalb stehen die Geräte jetzt in docker-compose.override.yml, erzeugt von
|
||||
# `deploy/geraete-override.sh`. Compose zieht die Override von allein dazu;
|
||||
# `docker compose up -d` bleibt derselbe Befehl. Nach jedem An- oder Abstecken
|
||||
# eines Laufwerks das Skript erneut aufrufen.
|
||||
|
||||
services:
|
||||
api:
|
||||
@@ -54,8 +71,7 @@ services:
|
||||
- temp:/app/temp
|
||||
# MakeMKV-Datenverzeichnis (dasselbe wie im Worker, siehe dort).
|
||||
- ${MAKEMKV_DATA_HOST:-/srv/rippy/makemkv}:/app/makemkv-data
|
||||
devices:
|
||||
- ${OPTICAL_SR:-/dev/sr0}:/dev/sr0
|
||||
# devices: siehe Kopf — kommen aus docker-compose.override.yml
|
||||
networks:
|
||||
- rippy-net
|
||||
depends_on:
|
||||
@@ -118,15 +134,11 @@ services:
|
||||
# Ohne diesen Mount löschte JEDER `up -d --build` beides; die
|
||||
# Fehlermeldung schickte den Nutzer zu einer Datei, die es nicht mehr gab.
|
||||
- ${MAKEMKV_DATA_HOST:-/srv/rippy/makemkv}:/root/.MakeMKV
|
||||
devices:
|
||||
# Host-Geräteknoten via .env (OPTICAL_SR/OPTICAL_SG) — je Rechner ANDERS!
|
||||
# MakeMKV spricht Laufwerke über die SCSI-Generic-Schicht an; ohne den
|
||||
# passenden sg-Knoten findet es „keine usable optical drives". Den sg-Knoten
|
||||
# des Laufwerks auf DIESEM Host ermitteln (lsscsi -g) und in die .env eintragen.
|
||||
# Achtung: nach USB-Reconnect zur Laufzeit kann die sg-Nummer wandern →
|
||||
# Container neu starten. Defaults (sr0/sg1) passen für den Ursprungs-Host.
|
||||
- ${OPTICAL_SR:-/dev/sr0}:/dev/sr0
|
||||
- ${OPTICAL_SG:-/dev/sg1}:/dev/sg1
|
||||
# devices: siehe Kopf dieser Datei — die optischen Knoten dieses Hosts
|
||||
# stehen in docker-compose.override.yml (deploy/geraete-override.sh).
|
||||
# MakeMKV braucht BEIDE: /dev/srN und den passenden /dev/sgM; welche
|
||||
# sg-Nummer dazugehoert, ist je Host anders und wird dort ueber die
|
||||
# SCSI-Adresse abgeglichen statt geraten.
|
||||
networks:
|
||||
- rippy-net
|
||||
depends_on:
|
||||
|
||||
Reference in New Issue
Block a user