Compose: Laufwerk als devices: statt Bind-Mount, Ausgabe aufs media-Volume

Bind-Mounts unter volumes: geben dem Container den Geräteknoten, aber keine
Device-Cgroup-Erlaubnis — jedes open() scheiterte mit EPERM. Totes
disc:-Volume raus (kein udevd legt dort je Symlinks an), depends_on wartet
jetzt auf healthy, Worker-read_only bis zur Härtung ausgesetzt (MakeMKV
braucht HOME).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-23 15:02:13 +02:00
parent 28a12b2e06
commit eee3a83d0e
+22 -14
View File
@@ -1,4 +1,9 @@
# Docker Compose für Rippy
#
# 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).
services:
api:
@@ -23,13 +28,15 @@ services:
volumes:
- media:/app/media
- temp:/app/temp
- /dev/cdrom:/dev/cdrom:ro
- /dev/sr0:/dev/sr0:ro
devices:
- /dev/sr0:/dev/sr0
networks:
- rippy-net
depends_on:
- postgres
- redis
postgres:
condition: service_healthy
redis:
condition: service_healthy
restart: unless-stopped
read_only: false
@@ -40,23 +47,25 @@ services:
environment:
- DATABASE_URL=postgresql://rippy:rippy@postgres:5432/rippy
- REDIS_URL=redis://redis:6379/0
- TMDB_API_KEY=${TMDB_API_KEY}
- THETVDB_API_KEY=${THETVDB_API_KEY}
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
- RIP_OUTPUT_DIR=/app/media
- MAKEMKV_APP_KEY=${MAKEMKV_APP_KEY}
- LOG_LEVEL=INFO
volumes:
- media:/app/media
- temp:/app/temp
- disc:/dev/disc
- /dev/cdrom:/dev/cdrom:ro
- /dev/sr0:/dev/sr0:ro
devices:
- /dev/sr0:/dev/sr0
networks:
- rippy-net
depends_on:
- postgres
- redis
postgres:
condition: service_healthy
redis:
condition: service_healthy
restart: unless-stopped
read_only: true
# read_only bleibt Ziel (Etappe 6), aber MakeMKV/abcde brauchen HOME +
# Settings — bis zur Härtung schreibbar, Ausgabe geht ohnehin aufs Volume.
read_only: false
tmpfs:
- /app/tmp
- /run
@@ -112,6 +121,5 @@ networks:
volumes:
media:
temp:
disc:
postgres-data:
redis-data: