使用shinyproxy部署shiny应用程序时,.Renviron文件放置在哪里?

Mwa*_*avu 7 r shiny docker shinyproxy

我正在学习如何使用闪亮代理来部署 R 闪亮应用程序,但我不知道将.Renviron包含用于访问数据库的全局变量的文件放置在哪里。

docker 镜像构建时没有任何错误,但是当我使用以下命令启动容器时:

docker run -it -p 3838:3838 shinyproxy-template .
Run Code Online (Sandbox Code Playgroud)

它在文件中找不到 env 变量.Renviron,并且最终在需要全局变量的 R 代码部分出现错误。

我当前的文件夹结构如下:

shinyproxy-template/
                   |- app-folder/
                   |- .gitignore
                   |- Dockerfile
                   |- README.md
                   |- app.Rproj
                   |- Rprofile.site
                   |- .Renviron
Run Code Online (Sandbox Code Playgroud)

我尝试将.Renviron文件放入然后app-folder/再次构建 Docker 映像,但全局变量仍然无法访问。

我应该将其放置在哪里.Renviron以便应用程序可以访问全局变量?

Max*_*Max 5

有多种选择:

将文件放置.Renviron到容器内的预期位置

您可以添加一个COPY命令来Dockerfile将文件复制.Renviron到预期位置 - 即用户的主目录或WORKDIRDockerfile 中定义的位置。如果是 root 用户,则为:

COPY .Renviron /root/
Run Code Online (Sandbox Code Playgroud)

将环境变量添加.Renviron到 Dockerfile

添加如下行:

ENV VAR1="value1"
ENV VAR2="value2"
Run Code Online (Sandbox Code Playgroud)

给你的Dockerfile

将环境变量添加.Renviron到shinyproxy配置中

您可以application.yaml使用以下方法在配置文件中定义环境变量

container-env:
  VAR1: VALUE1
  VAR2: VALUE2
Run Code Online (Sandbox Code Playgroud)

或者

container-env-file: /path/to/.Renviron
Run Code Online (Sandbox Code Playgroud)

为您的应用程序规范。请注意,这里的路径是在主机上,而不是在容器内。

为了docker run

docker run当您在shinyproxy之外进行操作时,您可以使用--env-file以下参数:

docker run -it -p 3838:3838 shinyproxy-template --env-file /path/to/shinyproxy-template/.Renviron
Run Code Online (Sandbox Code Playgroud)

相关文档链接: