0

我们让golem包自动为我们创建一个 Dockerfile 并且可以运行 docker 镜像并在根目录看到应用程序:http://localhost:3838/?...

但是我们希望应用程序出现在子目录中http://localhost:3838/myApp/v1/?...,这样我们就可以为 Apache 设置必要的代理,并让这个应用程序和其他应用程序都可以从单个服务器上使用。

我们可以手动编辑 Dockerfile 以复制包含以下信息的 shiny-server.conf 文件:

# Define a server that listens on port 3838
server {
  listen 3838;
  # Define a location at the base URL
  location /myApp/v1/ {
    # Host the directory of Shiny Apps stored in this directory
    site_dir /srv/shiny-server;
    # Log all Shiny output to files in this directory
    log_dir /var/log/shiny-server;
  }
}

上面的解决方案感觉像是一个 hack,我们希望golem内部有一些功能可以让我们设置应用程序出现的子目录。

4

1 回答 1

1

Dockerfile不幸的是,无法以编程方式在其中包含 nginx 配置:{golem}尝试帮助创建文件,但有些事情仍然需要手动完成。

另外,请注意,{golem} 它不会创建一个带有闪亮服务器的 Dockerfile,它会创建一个独立的 docker 映像来启动应用程序,因此没有运行闪亮的服务器,只有一个 R 进程。{shiny}就是这样,没有办法在给定的路径上本地运行它,它总是在根目录下,在端口上。

话虽如此,您可以做的是编辑 dockerfile 以便它还捆绑 nginx(或任何其他负载均衡器),以便您可以在路径上提供应用程序,或者在另一个端口上提供应用程序,使用port参数add_dockerfile():使用 Apache 代理配置它可能更容易。

科林

于 2020-08-31T13:58:39.123 回答