. data (用来存放R程序)
. docker-compose.yml
. logs (用来存日志)
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
启动服务
在data
目录里创建 test
文件夹,在test上传shiny程序,如app.R
通过url方法:http://你的IP或者域名:80/test/
日志文件保存在'logs'文件夹里,但查看不方便。可以直接运行'docker-compose up',也就是让服务不在后台运行。所有日志信息就可以实时打印出来了。
install.packages("xxx")
有时我们需要安装而外的R包才能让程序正常跑起来。这就需要进入docker容器进行安装。
docker exec -it shiny_1 bash
,其中shiny_1就是docker-compose.yml自定义的容器名字。R
进入R控制界面options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")))
install.packages("xxx")
由于R包是被安装在容器里,当容器被销毁后,这些R包也将丢失。为了防止这种情况,目前能找到比较可行方法是及时把容器保存成镜像。如果有更好的方法,欢迎指教。
docker commit <当前运行的container id> <仓库名称>:<tag>
如:docker commit shiny_1 myshiny:v1.0
docker iamges
image: rocker/shiny
换成你的镜像即可