启动Rocker容器时从附加卷中打开RStudio项目

问题描述 投票:0回答:2

我正在尝试使用 Docker 系统构建我的作品。当我启动一个从已安装卷附加项目的容器时,启动 Rstudio 服务器会很好。例如,我可以启动 docker,


docker run -d -p 8787:8787 -v $(pwd):/home/rstudio --name rocker rocker/verse:latest

它运行 Rstudio 服务器,我可以从 8787 端口访问它,但是当我启动容器时从

/home/rstudio
加载项目会很好。

r docker containers rstudio rstudio-server
2个回答
0
投票

有一个隐藏文件可以修改:

~/.rstudio/projects_settings/switch-to-project

用您希望 RStudio 在启动时打开的项目的路径填充它。


0
投票

这是一个非常古老的问题,但我在谷歌搜索完全相同的问题时发现了它,并在此处的旧帖子上找到了解决方案的提示:

https://community.rstudio.com/t/how-to-set-the-default-startup-project-in-rocker-tidyverse/63092

这里有一个比 posit 社区论坛中提供的更完整的答案:

我假设您知道如何从 dockerfile 构建图像。如果没有,那么您需要先学习如何从 dockerfile 进行构建,然后回到这里查看如何修改 dockerfile 来执行您想要的操作。

从rocker github下载rocker dockerfile。

例如,来自

https://github.com/rocker-org/rocker-versioned2/blob/master/dockerfiles/verse_4.3.2.Dockerfile

然后在您喜欢的文本编辑器中进行以下修改进行编辑:

首先,您必须将 .Rproj 项目文件放入容器中。你可以通过应对它来做到这一点(你可以谷歌如何做到这一点),但我已经从我的 gitlab 克隆了。为此,请将其添加到 dockerfile 的底部:

RUN cd /home/rstudio \
  && sudo git clone https://gitlab.com/your_git_username/your_project \
  && sudo chown -R rstudio:rstudio /home/rstudio/your_project

我们将进入 /home/rstudio 目录,然后将项目克隆到其中。为此,您需要将 git 项目面向公众。我确信有一些方法可以在非私人项目中进行克隆。显然,您需要将

your_git_username
your_project
更改为相关的内容。

然后将下一行添加到 dockerfile 的末尾,位于 git clone 步骤(如果您使用过该步骤)下方,以将项目设置为在启动时打开:

RUN echo 'setHook("rstudio.sessionInit", function(newSession) { if (newSession && is.null(rstudioapi::getActiveProject())) rstudioapi::openProject("/home/rstudio/your_project/your_project.Rproj") }, action = "append")' > /home/rstudio/.Rprofile

再次将

your_project
your_project.Rproj
更改为相关的内容。 然后,当您运行 docker 映像并转到 localhost:8787 时,它应该打开 rstudio,然后刷新并打开项目。

我们在这里所做的是将引号的内容回显到

.Rprofile
文件中。 .Rprofile 在 rstudio 启动时运行,并且
rstudioapi::openProject()
函数由
setHook
触发,瞧,指定的项目打开。

我还在 posit 社区论坛上发布了类似的内容。

© www.soinside.com 2019 - 2024. All rights reserved.