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

时间:2017-11-15 10:14:14

标签: git docker composer-php zsh oh-my-zsh

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

我使用的工具容器是基于debian:jessie;使用“oh-my-zsh”,主要是Git和作曲家。我的git存储库是从主机安装的。

这里有两个相关的问题:

第1期

由于运行docker显然是在root 0:0,我有关于我的本地用户主机(默认为1000:1000)的UID / GID问题以及运行Git或Composer的容器。 Container以root身份运行它(0:0),并且大部分时间都破坏了localhost权限。

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

第2期

与oh-my-zsh相同的问题。考虑到它使用root,如果我更改用户,我会在容器内获得权限被拒绝。

让我们将这个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约束)并获得有关将zsh用作另一个用户< ==>的解决方法使用git和composer,而容器卷和本地主机文件夹之间没有UID / GID问题。

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

0 个答案:

没有答案