
Ich habe auf meinem Linux-Computer (Ubuntu 23.10) ein Verzeichnis mit dem Namen:
/home/steve/foobar/foo
Das Verzeichnis und alle darin enthaltenen Dateien sind Eigentum des Benutzers Steve (UID 1000) und der Gruppe Steve (GID 1000).
Ich möchte es im Docker als /host/foo mounten
Egal, was ich versuche, alle Dateien im Docker gehören letztendlich root mit der Gruppe root. Ich möchte, dass sie dem Benutzer Steve und der Gruppe Steve gehören.
Hier ist compose.yaml:
services:
pyapp:
hostname: pytest
container_name: pytest1
command: 'sleep infinity'
volumes:
- /home/steve/foobar/foo:/host/foo
build:
dockerfile: testapp.dockerfile
Und hier ist meine testapp.dockerfile
FROM ubuntu:jammy
ARG UID=1000
RUN adduser \
--disabled-password \
--gecos "" \
--home "/home/steve" \
--shell "/bin/bash" \
--uid "${UID}" \
steve
RUN mkdir -p /host/foo
RUN chown steve: /host
RUN chown steve: /host/foo
USER steve
VOLUME /host/foo
Zum Bauen mache ich:
docker compose build
Zum Laufen mache ich:
docker compose run
Und um eine Befehlszeile im Docker zu erhalten, gehe ich wie folgt vor:
docker exec -it pytest1 /bin/bash
Welche genauen Änderungen muss ich vornehmen, damit alle Dateien unter /host/foo Steve und einer Gruppe von Steve gehören?
Danke schön.
(Falls es wichtig ist, ich verwende auch Docker Desktop).
Antwort1
Sie müssen Folgendes zu Ihrem Docker-Compose hinzufügen
user: "1000:1000"
Also in Ihrem Fall
services:
pyapp:
hostname: pytest
container_name: pytest1
command: 'sleep infinity'
user: "1000:1000"
volumes:
- /home/steve/foobar/foo:/host/foo
build:
dockerfile: testapp.dockerfile