我目前正在开发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问题。
我开始不知道如何解决这个问题。有什么建议?很多!