AWS Elastic Beanstalk 上的闪亮服务器 Docker
Shiny Server on AWS Elastic Beanstalk with Docker
如何在部署到 Elastic Beanstalk 的 Docker 容器中通过 Shiny Server 部署闪亮的应用程序?
理论上可以在 AWS Elastic Beanstalk 上使用 Docker 个容器 运行 R/Shiny(服务器)。不幸的是,我看不到关于这个主题的任何教程,我的尝试惨遭失败。
可以在具有自动缩放功能的 EC2 实例上部署 Shiny Server(去过那里,做过),因此 EB 应该不是什么大问题。但是还是那句话,我的经验和知识是有限的。
看来这样做很简单。这是示例 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)没有父文件夹。
这是完整过程的草图,包括安装额外的 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-提交,创建 Elastic Beanstalk 应用程序,然后部署。这是一个草图:
eb init
eb create shiny
我在博客 post 中写了完整的过程
https://www.highonscience.com/blog/2021/06/02/shiny-apps-elastic-beanstalk/.
如何在部署到 Elastic Beanstalk 的 Docker 容器中通过 Shiny Server 部署闪亮的应用程序?
理论上可以在 AWS Elastic Beanstalk 上使用 Docker 个容器 运行 R/Shiny(服务器)。不幸的是,我看不到关于这个主题的任何教程,我的尝试惨遭失败。
可以在具有自动缩放功能的 EC2 实例上部署 Shiny Server(去过那里,做过),因此 EB 应该不是什么大问题。但是还是那句话,我的经验和知识是有限的。
看来这样做很简单。这是示例 Shiny Server 运行.
的最小 DockerfileFROM rocker/shiny:3.6.3
USER shiny
EXPOSE 3838
CMD ["/usr/bin/shiny-server.sh"]
您可以直接从 ElasticBeanstalk 界面上传。
这里有两个非常重要的基本错误,可能会在 EB 部署中造成麻烦
- 从 Dockerfile 进行的整个安装不应超过 300 秒(我因为 R tidyverse 安装而出现此错误)。
- 如果您上传文件夹,请确保您的文件(尤其是 Dockerfile)没有父文件夹。
这是完整过程的草图,包括安装额外的 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-提交,创建 Elastic Beanstalk 应用程序,然后部署。这是一个草图:
eb init
eb create shiny
我在博客 post 中写了完整的过程 https://www.highonscience.com/blog/2021/06/02/shiny-apps-elastic-beanstalk/.