在Docker容器中使用git,composer,oh-my-zsh(UID / GID问题)

我目前正在Docker上开发一个定制开发环境。 我曾经build立一个重新组合Git,Composer,Symfony,Java的“工具”。主要目标是不要在主机上安装thoses软件包(我可以快速地从容器主机切换到主机)

我使用的工具容器是基于debian的:jessie; 使用“哦,我的ZSH”,主要是这部分的Git和composer php。 我的git存储库是从主机挂载的。

这里有两个相关的问题:

问题1

由于运行Docker显然是在root 0:0,我有我的本地用户主机(默认1000:1000)和运行Git或Composer的容器的UID / GID问题。 容器运行它作为根(0:0)和大部分时间破坏本地主机权限。

我已经尝试了与Gosu( https://github.com/tianon/gosu )的一些解决方法和/或玩关于创build用户(RUN useradd,USER用户….)envvars和Dockerfile参数。 仍然在这一部分失败。

问题2

与oh-my-zsh同样的问题。 考虑到它正在使用根,如果我更改用户,我得到一个容器内的权限被拒绝。

让我们考虑一下这个Dockerfile作为我目前用来构build容器的Dockerfile:

FROM debian:jessie RUN apt-get update -qq && apt-get install -y bc zsh curl wget git tig gettext-base vim nano # Install Oh My Zsh RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh || true ADD .zshrc /root/.zshrc # Install Composer RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php --filename=composer --install-dir=bin && php -r "unlink('composer-setup.php');" RUN composer global require "hirak/prestissimo:^0.3" ENTRYPOINT ["/bin/zsh"] 

我开始使用一个shell别名,如:

 alias tools="docker run --rm -it -v *GIT_FOLDER* -v *OTHER_VOLUMES* --network=dev -h tools tools" 

我的意思是仍然使用别名(UX约束),并得到一个解决方法,使用zit作为另一个用户<==>使用git和composer php没有容器卷和本地主机文件夹之间的UID / GID问题。

我开始不知道如何解决这个问题。 有什么build议? 多谢 !