带有 Shiny 应用程序的 Docker 容器在 localhost 上监听

标签 docker ubuntu shiny

我正在使用 linux 服务器,我想用我 Shiny 的应用程序运行 docker 容器,但它不工作。为了检查问题,我使用以下代码在 RStudio 中运行了 Shiny 的应用程序:

shiny::runApp('/srv/shiny-server/my_app/app', host="0.0.0.0", port=4096)

然后,我可以看到我的应用程序在浏览器上运行,RStudio 控制台中的输出如下:
...
Listening on http://0.0.0.0:4096

然后,我在 Ubuntu 终端上使用我的应用程序运行了一个 docker 容器,并且得到了相同的输出:
sudo docker run --rm -p 4096:3838 my_app

Listening on http://0.0.0.0:4096
但是,如果我在浏览器上导航到此地址,我将无法访问我的应用程序。
如果我在 Ubuntu 终端上写下以下内容,我会得到:
curl localhost:4096

curl: (7) Failed to connect to localhost port 4096
如果有人可以帮助我解决这个问题,我将不胜感激。

最佳答案

-p xxxx:yyyy docker run 上的参数命令将内部容器端口 (yyyy) 映射到主机上的端口 (xxxx)。
您的应用程序监听端口 4096,这是内部端口。看起来你想在 localhost:4096 上访问应用程序,所以主机端口也应该是 4096。
尝试

sudo docker run --rm -p 4096:4096 my_app

关于带有 Shiny 应用程序的 Docker 容器在 localhost 上监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72239758/

相关文章:

java - 如何在 Digital Ocean Nginx VPS 上运行 Java 代码?

windows - 启动 apache 服务器时,没有检查系统可用于类型 <type 'instancemethod' > 的对象

ubuntu - 在 Ubuntu 上构建 vscode 时找不到包 'xkbfile'

r - 使用 "shinyAppDir"函数在单个 Rmarkdown 文件中嵌入多个 Shiny 的应用程序

node.js - child_process 未在 docker 容器内收到 SIGTERM

docker - 连接到 Kubernetes、GKE 上的 Splash 服务

javascript - 错误 : MongoError: Authentication failed. 我正在使用 docker 和 mongoose

process - 在 Grid Engine/Sun Grid Engine/Son of Grid Engine 上使用 Docker

r - 使用 Plotly 和 Shiny 在 R 中绘制交互式散点图

r - 获取可用数据框的列表