Docker + vscode: неверный пользователь и владелец группы для git файлов - PullRequest
0 голосов
/ 20 апреля 2020

Я просто открываю для себя все возможности docker, будучи совершенно новым для всех возможностей разработки, поэтому, пожалуйста, go спокойно для меня ;-)! Мне было приказано смонтировать и использовать образ docker через vscode (используя расширения docker и remote-s sh), чтобы выдвигать / извлекать изменения из проекта, называемого далее «проект», с пользователем, имя пользователя которого находится в контейнер "vscode". Проблема в том, что разрешения, кажется, не установлены должным образом при построении изображения. При извлечении / толкании некоторых изменений внутри изображения я получаю следующую ошибку:

vscode@3910551790a9:/workspaces/project$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

При перечислении разрешений в папке. git внутри изображения я получаю следующее:

vscode@3910551790a9:/workspaces/project$ ls -lart .git
total 88
-rw-rw-r--  1 super_project super_project    73 Apr 17 14:53 description
drwxrwxr-x  2 super_project super_project  4096 Apr 17 14:53 branches
drwxrwxr-x  2 super_project super_project  4096 Apr 17 14:53 info
drwxrwxr-x  5 super_project super_project  4096 Apr 17 14:53 refs
-rw-rw-r--  1 super_project super_project   257 Apr 17 14:53 packed-refs
drwxrwxr-x  3 super_project super_project  4096 Apr 17 14:53 logs
drwxr-xr-x  4 super_project super_project  4096 Apr 17 14:53 lfs
drwxrwxr-x  2 super_project super_project  4096 Apr 17 14:53 hooks
-rw-rw-r--  1 super_project super_project   337 Apr 20 09:34 config
-rw-rw-r--  1 super_project super_project   309 Apr 20 10:46 FETCH_HEAD
-rw-rw-r--  1 super_project super_project    41 Apr 20 10:46 ORIG_HEAD
drwxrwxr-x  7 super_project super_project  4096 Apr 20 12:28 ..
-rw-rw-r--  1 super_project super_project    29 Apr 20 12:29 HEAD
drwxrwxr-x 37 super_project super_project  4096 Apr 20 13:55 objects
-rw-rw-r--  1 super_project super_project 24533 Apr 20 13:55 index
-rw-rw-r--  1 super_project super_project    35 Apr 20 13:55 COMMIT_EDITMSG
drwxrwxr-x  9 super_project super_project  4096 Apr 20 13:55 .

Файлы принадлежат "super_project" , тогда как предполагается, что они принадлежат пользователю "vscode" .

Здесь соответствующая часть Dockerfile:

FROM super_project/super_project:latest

USER root


ARG USERNAME=vscode
ARG USER_UID=1001
ARG USER_GID=$USER_UID



RUN apt-get update \
    && apt-get -y install --no-install-recommends apt-utils dialog 2>&1 \
    some install ...
    # Create a non-root user to use if preferred - see https://aka.ms/vscode-remote/containers/non-root-user.\
    && groupadd --gid $USER_GID $USERNAME \
    && useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
    # [Optional] Add sudo support for the non-root user
    && apt-get install -y sudo \
    && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME\
    && chmod 0440 /etc/sudoers.d/$USERNAME \
    # add github ssh key
    && mkdir ~vscode/.ssh/ \
    && ssh-keyscan github.com >> ~vscode/.ssh/known_hosts \
    && chown -R vscode.$USER_GID ~vscode/.ssh \
    #
    # Clean up
    && apt-get autoremove -y \
    && apt-get clean -y \
    && rm -rf /var/lib/apt/lists/*

Я отмечаю, что все работает нормально под MacOx, который используется моим боссом. Я лично использую Ubuntu 18.04 с docker версия 19.03 и vscode 1.44. Я прочитал, что есть некоторые тонкие различия в способе обработки разрешений в двух системах, что может объяснить мою проблему.

Может ли кто-нибудь объяснить мне, что здесь происходит и как решить эту проблему с разрешениями?

Заранее спасибо!

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