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

标签 r git docker rstudio-server

我能够设置 Dockerfile使用默认的 ENV 变量,然后我可以在运行我的 docker 容器时配置这些变量,例如在 Dockerfile 中,我有以下几行:

ENV USERNAME ropensci
ENV EMAIL ropensci@github.com
RUN git config --global user.name $USERNAME
RUN git config --global user.email $EMAIL

太棒了。当我启动交互式 session 时:

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,我该如何解决?

最佳答案

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

有效!

rstudio

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

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

关于r - 在运行 RStudio 的守护进程 Docker 中使用 ENV 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25335333/

相关文章:

r - 在 Ibrokers 上使用 R 获取 EUR.USD 历史数据时出错

远程分支中特定文件行的下一次更改的 Git 日志

javascript - Bower:ENOGIT Git 未安装或不在 PATH 中

python - Docker交互模式和执行脚本

r - 在 ggplot 中动态定位在多行上的表达式

r - gsub ) 仅当没有 (

java - ls(envir = envir, all.names = private) 错误 : invalid 'envir' argument in R

使用 ColdFusion <cfexecute> 的 Git Pull/Fetch 超时

docker - docker 容器更改后 WSO2 丢失 API

WSL 中 jekyll 镜像的 Docker 权限问题