Вы можете создать пользователя в своем файле Docker, если пользователь astro
не существует, и переключить пользователя на вновь созданного пользователя, чтобы последующая команда была запущена для этого пользователя. Вы также можете владеть любой папкой во время сборки.
Я не уверен насчет вашего базового докера, если пользователь существует, просто переключитесь, если нет, то создайте его, но это то, как вы можете сделать это, используя alpine [nodejs-example from github]
FROM alpine:3.8
# install git
RUN apk --no-cache add git openssh
# create user named appuser
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
RUN mkdir -p /opt/nodejs
# own folder testing
RUN chown -R /opt/nodejs
# switch the user to appuser
USER appuser
RUN whoami
# Test some folder
RUN mkdir /home/appuser/foldera
RUN mkdir /home/appuser/folderb
RUN git clone https://github.com/Adiii717/nodejs-helloworld.git /home/appuser/nodejs-app;
Создание образа докера
docker build -t test .
Запустить контейнер
docker run -it --rm --name test test ash -c "tail -f /dev/null"
Выполнить команду как пользователь
docker exec -it -u appuser test ash
Проверка прав доступа к папке
Кроме того, appuser не будет разрешать в корневых каталогах