Права доступа к файлу git-клона Dockerfile - PullRequest
1 голос
/ 10 июля 2019

Мой Dockerfile настроен для использования пользователем "astro".
В Dockerfile я клонирую репозиторий Git:

FROM astronomerinc/ap-airflow:0.9.0-1.10.3-onbuild
ENV GITHUB_TOKEN ****
RUN git clone https://token@github.com/owner/my-git-project.git

Это заканчивается правами root: root, что не идеально, так как внутри этого Dockerfile у меня есть скрипт Python, который должен обновлять содержимое репозитория Git:

drwxr-xr-x    7 astro    astro          224 Jul 10 14:42 my-python-proj
drwxr-xr-x    1 root     root          4096 Jul 10 18:47 folder_b
drwxr-xr-x    2 root     root          4096 Jun 27 09:19 folder_c
drwxr-xr-x    1 root     root          4096 Jul 10 18:47 my-git-project

Как я могу гарантировать, что мой пользователь по умолчанию в Dockerfile может писать в репозиторий Github? (Простой chown, похоже, не помогает, так как последующие операции git добавят папки с правами только root.)

А позже у меня есть скрипт Python, который пишет в этот репозиторий:

some_script.py
def makeDirsAndCommit
   //writes some dirs to git repo folder
   //runs git add . 
   //runs git commit

1 Ответ

0 голосов
/ 11 июля 2019

Вы можете создать пользователя в своем файле 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

Проверка прав доступа к папке enter image description here

Кроме того, appuser не будет разрешать в корневых каталогах

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...