如何通过docker-compose 部署Shiny Server

发布于 2020-09-02 10:19:44

目录

. data (用来存放R程序)
. docker-compose.yml
. logs (用来存日志)

image.png

docker-compose.yml

version: '3'
services:
  shiny:
   image: rocker/shiny
   container_name: shiny_1 #自定义容器名字
   ports:
     - "80:3838"
   volumes:
     - "./data:/srv/shiny-server"
     - "./logs:/var/log/shiny-server/"

Shiny Server 默认端口时3838,这里映射到寄主的80端口。docker-compose up -d 启动服务

运行shiny程序

data目录里创建 test文件夹,在test上传shiny程序,如app.R
通过url方法:http://你的IP或者域名:80/test/
image.png

查看日志

日志文件保存在'logs'文件夹里,但查看不方便。可以直接运行'docker-compose up',也就是让服务不在后台运行。所有日志信息就可以实时打印出来了。
image.png

安装R包:install.packages("xxx")

有时我们需要安装而外的R包才能让程序正常跑起来。这就需要进入docker容器进行安装。

  1. 进入容器命令:docker exec -it shiny_1 bash ,其中shiny_1就是docker-compose.yml自定义的容器名字。
  2. 输入命令R进入R控制界面
  3. 设置R国内源:options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")))
  4. 执行安装命令:install.packages("xxx")

保存容器成镜像

由于R包是被安装在容器里,当容器被销毁后,这些R包也将丢失。为了防止这种情况,目前能找到比较可行方法是及时把容器保存成镜像。如果有更好的方法,欢迎指教。

  1. 命令:docker commit <当前运行的container id> <仓库名称>:<tag> 如:docker commit shiny_1 myshiny:v1.0
  2. 查看镜像docker iamges
  3. 使用镜像,把docker-compose.yml里的image: rocker/shiny换成你的镜像即可
0 条评论

发布
问题