
Eu tenho um diretório no meu computador Linux (Ubuntu 23.10) chamado:
/home/steve/foobar/foo
O diretório e todos os arquivos nele contidos pertencem ao usuário steve (uid 1000) e ao grupo steve (gid 1000).
Quero montá-lo dentro do docker como /host/foo
Não importa o que eu tente, todos os arquivos dentro do docker acabam sendo propriedade do root com o grupo root. Quero que eles sejam propriedade do usuário Steve e do grupo Steve.
Aqui está compose.yaml:
services:
pyapp:
hostname: pytest
container_name: pytest1
command: 'sleep infinity'
volumes:
- /home/steve/foobar/foo:/host/foo
build:
dockerfile: testapp.dockerfile
E aqui está meu 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
Para construir eu faço:
docker compose build
Para correr eu faço:
docker compose run
E para obter uma linha de comando dentro do docker eu faço:
docker exec -it pytest1 /bin/bash
Que mudanças exatas devo fazer para que todos os arquivos em /host/foo sejam de propriedade de Steve com um grupo de Steve?
Obrigado.
(Se for importante, também estou executando o docker desktop).
Responder1
Você precisa adicionar o seguinte ao seu docker-compose
user: "1000:1000"
Então no seu caso
services:
pyapp:
hostname: pytest
container_name: pytest1
command: 'sleep infinity'
user: "1000:1000"
volumes:
- /home/steve/foobar/foo:/host/foo
build:
dockerfile: testapp.dockerfile