Mit read_only: true und ohne volumes lag /app vollstaendig auf einem schreibgeschuetzten Dateisystem. Die App konnte weder history.json noch config.json oder users.json schreiben und auch keine Medien ablegen - Login endete mit OSError, Einstellungen und Willkommensseiten wurden nicht gespeichert. Das README dokumentierte die Mounts bereits, die Datei selbst hatte sie nie. Zusaetzlich TZ=Europe/Berlin: is_item_active() wertet die Serverzeit aus, ohne TZ laeuft der Container in UTC und alle Zeitfenster der Playlist-Zeitsteuerung waeren um ein bis zwei Stunden verschoben. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
33 lines
918 B
YAML
33 lines
918 B
YAML
|
|
services:
|
|
signage:
|
|
container_name: signage
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
platforms:
|
|
- linux/amd64
|
|
image: gitea.teamthiele.de/ethiele/signage:latest
|
|
ports:
|
|
- "5005:5005"
|
|
restart: unless-stopped
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp
|
|
cap_drop:
|
|
- ALL
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
volumes:
|
|
# Ohne diese Mounts liegt /app auf dem read-only Root-FS und die App
|
|
# kann weder Konfiguration noch Verlauf noch Medien schreiben.
|
|
- ./media:/app/media
|
|
- ./config.json:/app/config.json
|
|
- ./users.json:/app/users.json
|
|
- ./history.json:/app/history.json
|
|
environment:
|
|
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
|
|
# Zeitzone: die Zeitsteuerung der Playlist wertet die Serverzeit aus,
|
|
# ohne TZ laeuft der Container in UTC und Zeitfenster verschieben sich.
|
|
- TZ=Europe/Berlin
|