在运行RStudio的守护进程Docker中使用ENV变量

时间:2014-08-15 22:56:22

标签: r git docker rstudio-server

我可以使用默认的ENV变量设置Dockerfile,然后我可以在运行我的docker容器时配置它,例如在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服务器,然后我可以在守护进程模式下运行图像时在浏览器中登录:

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 --listecho $USERNAME,我只得到一个空值。为什么这适用于/ bin / bash但不适用于RStudio,我该如何解决?

1 个答案:

答案 0 :(得分:2)

您的git配置在/.gitconfig上设置。此配置文件适用于root用户。您需要为rstudio用户设置git config,因为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"

有效!

rstudio

另一个解决方案是编写Dockerfile是基于cboettig / ropensci-docker。下面是Dockerfile示例。

FROM cboettig/ropensci-docker
RUN cp /.gitconfig /home/rstudio
CMD ["/usr/bin/supervisord"]