【问题标题】:Shiny Server on AWS Elastic Beanstalk with DockerAWS Elastic Beanstalk 上的闪亮服务器与 Docker
【发布时间】:2020-08-13 21:06:05
【问题描述】:

如何通过 Shiny Server 在部署到 Elastic Beanstalk 的 Docker 容器中部署闪亮的应用程序?

理论上,可以使用 Docker 容器在 AWS Elastic Beanstalk 上运行 R/Shiny(服务器)。不幸的是,我没有看到任何关于这个主题的教程,我的尝试失败了。

可以在具有自动缩放功能的 EC2 实例上部署 Shiny Server(已经完成了),因此 EB 应该不是什么大问题。但同样,我的经验和知识是有限的。

【问题讨论】:

  • 我昨天离得很近,但在 nginx 部分失败了。如果你愿意,我可以分享 Dockerfile GH gist。休息是模板闪亮的例子(间歇泉直方图)

标签: r docker shiny amazon-elastic-beanstalk shiny-server


【解决方案1】:

看起来这样做很简单。这是 Shiny Server 运行示例的最小 Dockerfile。

FROM rocker/shiny:3.6.3
USER shiny
EXPOSE 3838
CMD ["/usr/bin/shiny-server.sh"]

您可以直接从 ElasticBeanstalk 界面上传。

这里有两个非常重要的基本错误,可能会给 EB 部署带来麻烦

  • 从 Dockerfile 进行的整个安装不应超过 300 秒(由于 R tidyverse 安装,我遇到了此错误)。
  • 如果您上传文件夹,请确保您的文件(尤其是 Dockerfile)没有父文件夹。

【讨论】:

  • 嗨,berkorbay,我也遇到了关于 tidyverse 安装的问题。您对此有什么建议吗?我正打算开始使用 data.table 代替生产。将 tidyverse 拆分为 dplyr 等。没有让我到任何地方。
  • @AaronGorman 一个快捷解决方案可能正在使用已安装的 tidyverse docker 镜像,例如 hub.docker.com/r/rocker/shiny-verse
【解决方案2】:

这是完整过程的草图,包括安装额外的 R 包。

将闪亮的应用程序放在名为 apps 的目录中。多个应用可以存在于应用的多个子目录中。

使用以下内容创建一个名为 Dockerfile.base 的文件。

FROM rocker/shiny
# Install more R packages like this:
RUN . /etc/environment && R -e "install.packages(c('ROCR', 'gbm'), repos='$MRAN')"

在本地构建并推送到 AWS ECR。按照 AWS 的说明进行操作,但这里有一个草图。

# region="us-west-1"
# aws_account_id=123456789
aws ecr get-login-password --region $region | docker login --username AWS --password-stdin ${aws_account_id}.dkr.ecr.${region}.amazonaws.com
docker build -t rshiny-base Dockerfile.base
docker tag rshiny-base:latest ${aws_account_id}.dkr.ecr.${region}.amazonaws.com/rshiny-base:latest
docker push ${aws_account_id}.dkr.ecr.${region}.amazonaws.com/rshiny-base:latest

使用以下内容创建一个新的 Dockerfile。请注意,它会将您的应用复制到映像中。

FROM <aws_account_id>.dkr.ecr.<region>.amazonaws.com/rshiny-base
USER shiny
COPY apps /srv/shiny-server
EXPOSE 3838
CMD ["/usr/bin/shiny-server.sh"]

Git-commit,创建一个 Elastic Beanstalk 应用程序,然后部署。这是一个草图:

eb init
eb create shiny

我在博客文章中写了完整的程序 https://www.highonscience.com/blog/2021/06/02/shiny-apps-elastic-beanstalk/.

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2017-07-26
    • 2021-07-11
    • 2016-03-07
    • 2014-09-08
    • 1970-01-01
    相关资源
    最近更新 更多