我想你应该首先在一个特定的文件夹中创建一个 Dockerfile,它看起来像这样:
FROM rocker/shiny:latest
RUN echo 'install.packages(c("package1","package2", ...), \
repos="http://cran.us.r-project.org", \
dependencies=TRUE)' > /tmp/packages.R \
&& Rscript /tmp/packages.R
EXPOSE 3838
CMD ["/usr/bin/shiny-server.sh"]
然后进入这个文件夹并构建你的镜像,使用这个命令给它一个名字:
docker build -t your-tag .
最后,一旦你的镜像被构建,你就可以创建一个容器,如果你没有忘记映射卷和端口,你应该能够在 localhost:3838 找到它,并从文件夹中启动以下命令包含 srv 文件夹:
docker run --rm -p 3838:3838 -v $PWD/srv/shinyapps/:/srv/shiny-server/ -v $PWD/srv/shinylog/:/var/log/shiny-server/ your-tag
正如以下地址 https://hub.docker.com/r/rocker/shiny/ 的 Docker 文档中所述,您可能希望使用 -d 选项以分离模式启动它,并将其映射到主机的端口 80 以进行实际部署。