【问题标题】:Using ENV variables in daemonized Docker running RStudio在运行 RStudio 的守护进程 Docker 中使用 ENV 变量
【发布时间】:2014-10-09 17:10:06
【问题描述】:

我可以使用默认的 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,我该如何解决?

【问题讨论】:

标签: r git docker rstudio-server


【解决方案1】:

您的 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"

有效!

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

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

【讨论】:

  • 宾果游戏,我应该注意到了! Dockerfile 现在按照您的建议进行了更新。谢谢
猜你喜欢
  • 2021-10-27
  • 2020-12-28
  • 2020-02-10
  • 2018-11-08
  • 2023-03-02
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多