如何在Docker中部署R Shiny应用并通过localhost:3838/myapp访问
配置Shiny App在Docker子路径/myapp下运行
要让你的Shiny App通过localhost:3838/myapp访问,需要调整目录结构和Shiny Server配置,具体步骤如下:
1. 调整本地项目结构
把你的Shiny App核心文件(比如app.R、index.R等)放到本地的myapp子目录中,最终项目结构如下:
你的项目目录/ ├── Dockerfile ├── Rprofile.site └── myapp/ └── app.R # 你的Shiny应用文件
2. 修改Dockerfile
更新Dockerfile内容,调整文件复制路径,并添加自定义Shiny Server配置:
FROM rocker/shiny # 安装系统依赖(保留原内容) RUN apt-get update && apt-get install -y \ --no-install-recommends \ git-core \ libssl-dev \ libcurl4-gnutls-dev \ curl \ libsodium-dev \ libxml2-dev \ libicu-dev \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* ENV _R_SHLIB_STRIP_=true COPY Rprofile.site /etc/R RUN R -e "install.packages('shiny', repos='http://cran.rstudio.com/')" RUN R -e "install.packages('remotes', repos='http://cran.rstudio.com/')" # 复制应用到子路径目录 COPY ./myapp /srv/shiny-server/myapp # 复制自定义Shiny Server配置 COPY shiny-server.conf /etc/shiny-server/shiny-server.conf USER shiny EXPOSE 3838 CMD ["/usr/bin/shiny-server"]
3. 创建自定义Shiny Server配置文件
在项目根目录创建shiny-server.conf文件,内容如下:
run_as shiny; server { listen 3838; # 配置/myapp路径对应的应用目录 location /myapp { site_dir /srv/shiny-server/myapp; log_dir /var/log/shiny-server; directory_index on; } }
4. 重新构建并运行容器
执行以下命令重新构建镜像并启动容器:
docker build -t myapp . docker run --rm -p 3838:3838 myapp
完成后,你就可以通过localhost:3838/myapp访问你的Shiny应用了。
内容的提问来源于stack exchange,提问作者hlinnnnnn
相关产品推荐
相关产品推荐

