我正在使用 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/