我能够设置一个带有默认ENV变量的Dockerfile,然后在运行我的码头容器时可以配置这些变量,例如,在Dockerfile中,我有以下行:
ENV USERNAME ropensci
ENV EMAIL ropensci@github.com
RUN git config --global user.name $USERNAME
RUN git config --global user.email $EMAIL太棒了。当我启动互动会议时:
docker run -it --env USERNAME="Carl" --env EMAIL=cboettig@example.com myimage /bin/bash然后,我可以发出命令git config --list,并看到git被配置为使用我在命令行中提供的值,而不是缺省值。
但是,我的Dockerfile也被配置为运行一个RStudio服务器,然后当我以Daemon模式运行映像时,可以登录到浏览器中:
docker run -d -p 8787:8787 --env USERNAME="Carl" --env EMAIL=cboettig@example.com cboettig/ropensci-docker我转到localhost:8787并登录到RStudio,所有这些都能正常工作,启动一个启用git的新“项目”,但是RStudio却找不到我的git名称和电子邮件。我可以从RStudio菜单中打开shell,运行git config --list或echo $USERNAME,然后只得到一个空白值。为什么这对/bin/bash有效,而不适用于RStudio,以及如何修复它?
发布于 2014-08-16 04:50:02
您的git配置设置在/.gitconfig上。此配置文件是为根用户提供的。您需要为rstudio用户设置git配置,因为rstudio运行在rstudio用户上。下面的命令是一个临时解决方案。
docker run -it -p 8787:8787 --env USERNAME="Carl" --env EMAIL=cboettig@example.com cboettig/ropensci-docker bash -c "cp /.gitconfig /home/rstudio; /usr/bin/supervisord"它起作用了!

另一种解决方案是基于cboettig/ropensci-docker编写Dockerfile。下面是示例Dockerfile。
FROM cboettig/ropensci-docker
RUN cp /.gitconfig /home/rstudio
CMD ["/usr/bin/supervisord"]https://stackoverflow.com/questions/25335333
复制相似问题