Отказано в доступе для Docker Gitlab после получения хука - PullRequest
0 голосов
/ 20 мая 2019

У меня установлен Gitlab в Docker-контейнере с этой командой:

sudo docker run --detach \
  --hostname git.example.com \
  --publish 443:443 --publish 80:80 --publish 2201:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  --volume /srv/gitlab/mounts:/etc/gitlab/mounts \
  gitlab/gitlab-ce:latest

Затем я смонтировал несколько сетевых NTFS-модулей с

mount.cifs -o username=gituser,password=somepassword,uid=997,gid=994 "//10.10.10.16/Git" /srv/gitlab/mounts/shared_folder

, поэтому я могу получить доступ к этой папкевнутри контейнера, который я пробовал и работает просто отлично.Проблема возникает, когда я хочу использовать хук после получения, такой как этот

#!/usr/bin/env bash
while read oldrev newrev ref
do
    DATE=`date '+%Y-%m-%d %H:%M:%S'`;
    if [[ $ref =~ .*/master$ ]];
    then
        echo $DATE >> logProd.txt
        git --work-tree=/mnt/gitlab/shared_folder/production --git-dir=/var/opt/gitlab/git-data/repositories/repo.git checkout -f m$
         echo "Master ref received.  Deploying master branch to production...">> logProd.txt
    fi

    if [[ $ref =~ .*/desarrollo$ ]];
    then
        echo $DATE >> logDevelop.txt;
        echo "Desarrollo ref received.  Deploying develop  branch to develop...">> logDevelop.txt
        git --work-tree=/mnt/gitlab/shared_folder/developement--git-dir=/var/opt/gitlab/git-data/repositories/repo.git  checkout -f developement
        echo "Desarrollo ref received.  Deploying finished">> logDevelop.txt
    fi

    if [[ $ref =~ .*/testing$ ]];
    then
        echo $DATE >> logTesting.txt;
        echo "Testing ref received.  Deploying testing branch to testing...">> logTesting.txt
        git --work-tree=/mnt/gitlab/shared_folder/testing --git-dir=/var/opt/gitlab/git-data/repositories/repo.git checkout -f testing
        echo "Testing ref received.  Deploying finished">> logTesting.txt
    fi
done

Затем, когда я нажимаю на репо, я получаю несколько «Отказано в доступе», и, несмотря на то, что толчок фактически завершен,папка не копируется в папку NTFS.

Я думаю, что проблема связана с разрешениями пользователя, который выполняет перехват post-receive.sh внутри контейнера докера, но я попытался изменитьпапкам с разрешениями 777, и это не дает никакого эффекта, они возвращаются к своим прежним разрешениям.

Я попытался создать папку внутри NTFS, к которой открыт общий доступ для пользователя с контейнерами, и она работает просто отлично, но с помощью gitпользователи получают сообщение «ошибка: невозможно создать файл README.md: в доступе отказано» для каждого файла.

...