.env mit chmod 600 ist im Container nicht lesbar - Docker-Weg scheitert bei A3 #1

Closed
opened 2026-08-22 00:32:14 +02:00 by Lyra · 1 comment
Collaborator

Getestet mit einem frischen Clone (82fe2d7, v0.11.1) auf einem
Debian-13-Host mit Docker 29.0.0 / Compose v2.40.3, streng nach
docs/installation.md Weg A.

Was passiert

Schritt 0 der Anleitung schreibt vor:

cp -n .env.example .env
chmod 600 .env

Damit gehoert die Datei dem Host-Benutzer (z. B. UID 1000). Der Container
laeuft laut Dockerfile als USER klima (UID 10001) und bekommt die .env
per Bind-Mount hereingereicht. Owner-Rechte greifen nicht, others hat
keine — die Datei ist im Container nicht lesbar:

$ docker compose run --rm klimacontrol check-config
Konfigurationsfehler: .env nicht lesbar: /config/.env ([Errno 13] Permission denied: '/config/.env')

Das trifft jeden, der dem Docker-Weg folgt, und zwar direkt beim ersten
Befehl, der die Konfiguration braucht (A3). Der venv-Weg ist nicht
betroffen, weil der Dienst dort als der Benutzer laeuft, dem die Datei
gehoert.

Dieselbe Falle steckt in A6 fuer web/.env.

Workaround, mit dem der Test weiterlief

sudo chown 10001:10001 .env    # 600 bleibt

Vorschlag

Der Fehlertext ist gut (kein stiller Fehlschlag), nur die Anleitung fehlt.
Eine der beiden Varianten in docs/installation.md aufnehmen, fuer .env
und web/.env:

  • sudo chown 10001:10001 .env mit einem Satz, warum (Container-UID), oder
  • in der docker-compose.yml eine feste user:-Angabe setzen, die zur
    Host-UID passt — dann bleibt chmod 600 ohne chown funktionsfaehig.

Die UID 10001 sollte an der Stelle ausdruecklich genannt werden; sie steht
sonst nur im Dockerfile.

Getestet mit einem frischen Clone (82fe2d7, v0.11.1) auf einem Debian-13-Host mit Docker 29.0.0 / Compose v2.40.3, streng nach `docs/installation.md` Weg A. ## Was passiert Schritt 0 der Anleitung schreibt vor: ```bash cp -n .env.example .env chmod 600 .env ``` Damit gehoert die Datei dem Host-Benutzer (z. B. UID 1000). Der Container laeuft laut Dockerfile als `USER klima` (UID 10001) und bekommt die `.env` per Bind-Mount hereingereicht. Owner-Rechte greifen nicht, `others` hat keine — die Datei ist im Container nicht lesbar: ``` $ docker compose run --rm klimacontrol check-config Konfigurationsfehler: .env nicht lesbar: /config/.env ([Errno 13] Permission denied: '/config/.env') ``` Das trifft jeden, der dem Docker-Weg folgt, und zwar direkt beim ersten Befehl, der die Konfiguration braucht (A3). Der venv-Weg ist nicht betroffen, weil der Dienst dort als der Benutzer laeuft, dem die Datei gehoert. Dieselbe Falle steckt in A6 fuer `web/.env`. ## Workaround, mit dem der Test weiterlief ```bash sudo chown 10001:10001 .env # 600 bleibt ``` ## Vorschlag Der Fehlertext ist gut (kein stiller Fehlschlag), nur die Anleitung fehlt. Eine der beiden Varianten in `docs/installation.md` aufnehmen, fuer `.env` und `web/.env`: - `sudo chown 10001:10001 .env` mit einem Satz, warum (Container-UID), oder - in der `docker-compose.yml` eine feste `user:`-Angabe setzen, die zur Host-UID passt — dann bleibt `chmod 600` ohne `chown` funktionsfaehig. Die UID 10001 sollte an der Stelle ausdruecklich genannt werden; sie steht sonst nur im Dockerfile.
Author
Collaborator

Behoben in 57c395f (0.14.0). docs/installation.md nennt jetzt in Schritt 0 das noetige sudo chown 10001 .env samt Begruendung (Container-UID 10001, USER klima im Dockerfile) und in A6 dasselbe fuer web/.env. Gegen die feste user:-Angabe im Compose entschieden: das Image legt /data mit UID 10001 an, eine Host-UID wuerde die Volume-Rechte brechen.

Behoben in 57c395f (0.14.0). `docs/installation.md` nennt jetzt in Schritt 0 das noetige `sudo chown 10001 .env` samt Begruendung (Container-UID 10001, `USER klima` im Dockerfile) und in A6 dasselbe fuer `web/.env`. Gegen die feste `user:`-Angabe im Compose entschieden: das Image legt /data mit UID 10001 an, eine Host-UID wuerde die Volume-Rechte brechen.
Lyra closed this issue 2026-08-22 01:00:05 +02:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
draventec/klimacontrol#1
No description provided.