我正在尝试使用 Docker 系统构建我的作品。当我启动一个从已安装卷附加项目的容器时,启动 Rstudio 服务器会很好。例如,我可以启动 docker,
docker run -d -p 8787:8787 -v $(pwd):/home/rstudio --name rocker rocker/verse:latest
它运行 Rstudio 服务器,我可以从 8787 端口访问它,但是当我启动容器时从
/home/rstudio
加载项目会很好。
有一个隐藏文件可以修改:
~/.rstudio/projects_settings/switch-to-project
用您希望 RStudio 在启动时打开的项目的路径填充它。
这是一个非常古老的问题,但我在谷歌搜索完全相同的问题时发现了它,并在此处的旧帖子上找到了解决方案的提示:
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 社区论坛上发布了类似的内容。