作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试构建一个大型 Docker 镜像并从中运行一个 Shiny 的应用程序,以便我最终可以将它部署到 Unix 服务器。镜像构建成功;但是,当我去运行图像时,应用程序会运行并完全忽略指定的端口。
更奇怪的是,我首先构建了一个小型测试应用程序,并且这篇 SO 帖子( Shiny app docker container not loading in browser )中的说明起作用了。我将在测试应用程序中使用的相同样式复制到另一个 Shiny 应用程序中,但现在它不起作用了。
我的 Docker 镜像的结构与 ShinyProxy 在其 Github 页面上使用的结构类似:https://github.com/openanalytics/shinyproxy-template :
|-- Dockerfile
|-- Rprofile.site
|-- app_stuff
|-- app.R
|-- accessory files called from app.R...
# Install R version 3.5.1
FROM r-base:3.5.1
# system libraries of general use - I don't know if these are right ????
RUN apt-get update && apt-get install -y \
default-jdk \
libbz2-dev \
zlib1g-dev \
gfortran \
liblzma-dev \
libpcre3-dev \
libreadline-dev \
xorg-dev \
sudo \
pandoc \
pandoc-citeproc \
libcurl4-gnutls-dev \
libcairo2-dev \
libxt-dev \
libssl-dev \
libssh2-1-dev \
libxml2-dev
RUN R -e "install.packages('remotes');"
RUN R -e "library(remotes); \
remotes::install_version('shiny', version='1.1.0', repos='https://cran.r-project.org/'); \
remotes::install_version('tidyverse', version='1.2.1', repos='https://cran.r-project.org/'); \
remotes::install_version('ggiraph', version='0.6.0', repos='https://cran.r-project.org/'); \
remotes::install_version('plotly', version='4.8.0', repos='https://cran.r-project.org/'); \
remotes::install_version('CausalImpact', version='1.2.3', repos='https://cran.r-project.org/'); \
remotes::install_version('reshape2', version='1.4.3', repos='https://cran.r-project.org/'); \
remotes::install_version('bsts', version='0.8.0', repos='https://cran.r-project.org/'); \
remotes::install_version('xts', version='0.10-2', repos='https://cran.r-project.org/'); \
remotes::install_version('BoomSpikeSlab', version='1.0.0', repos='https://cran.r-project.org/'); \
remotes::install_version('Boom', version='0.8', repos='https://cran.r-project.org/'); \
remotes::install_version('MASS', version='7.3-50', repos='https://cran.r-project.org/'); \
remotes::install_version('dygraphs', version='1.1.1.4', repos='https://cran.r-project.org/'); \
remotes::install_version('prophet', version='0.4', repos='https://cran.r-project.org/'); \
remotes::install_version('rlang', version='0.3.3', repos='https://cran.r-project.org/'); \
remotes::install_version('Rcpp', version='1.0.1', repos='https://cran.r-project.org/'); \
remotes::install_version('zoo', version='1.8-1', repos='https://cran.r-project.org/'); \
remotes::install_version('RJDBC', version='0.2-7.1', repos='https://cran.r-project.org/'); \
remotes::install_version('rJava', version='0.9-10', repos='https://cran.r-project.org/'); \
remotes::install_version('shinyjs', version='1.0', repos='https://cran.r-project.org/'); \
remotes::install_version('DT', version='0.5', repos='https://cran.r-project.org/'); \
remotes::install_version('shinyBS', version='0.61', repos='https://cran.r-project.org/');"
# copy the app to the image
RUN mkdir /root/app_stuff
COPY app_stuff /root/app_stuff
COPY Rprofile.site /usr/lib/R/etc/
EXPOSE 3838
CMD ["R", "-e", "shiny::runApp('/root/app_stuff')"]
local({
options(shiny.port = 3838, shiny.host = "0.0.0.0")
})
docker build -t price_opt .
docker run -it -p 3838:3838 price_opt
Listening on http://0.0.0.0:3838
,而是打印出来:
Listening on http://127.0.0.1:6688
docker run
在较小的应用程序上从上面发出命令,该应用程序在 localhost:3838 下可用。
docker run
中提供的端口号。命令。
CMD ["R", "-e", "shiny::runApp('/root/app_stuff', host='0.0.0.0', port=3838)"]
,该应用程序能够在 localhost:3838 上正常启动。
最佳答案
端口 3838 是 Shiny Server 的默认端口,但 runApp()
选择一个可用的端口。看来 R 没有接您的 Rprofile.site
,所以我只会在您对 runApp()
的调用中指定端口:
CMD ["R", "-e", "shiny::runApp('/root/app_stuff',options = list(port = '3838'))"]
关于r - 构建 Docker 镜像并指定端口后,Shiny 应用程序未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56138375/
我是一名优秀的程序员,十分优秀!