使用 ADD=Shiny 添加 shiny server 和 rocker verse image
Add shiny server with ADD=Shiny with rocker verse image
Documentation for rocker/rstudio docker container.
我可以使用 Docker 在 rstudio 中起床 运行,并在目录中设置以下内容:
Docker文件:
FROM rocker/tidyverse:latest
docker-撰写:
version: "3.5"
services:
ide-rstudio:
build:
context: .
ports:
- 8787:8787
environment:
ROOT: "TRUE"
PASSWORD: test
现在,如果我在终端中输入此目录并键入:docker-compose build
,然后是 docker-compose up -d
,然后导航到 localhost:8787,我会看到 rstudio 登录屏幕。到目前为止一切顺利。
我想根据文档向同一个容器添加光泽(而不是使用单独的光泽图像)。
在我 link 顶部的文档中说:
Add shiny server on start up with e ADD=shiny
docker run -d -p 3838:3838 -p 8787:8787 -e ADD=shiny -e PASSWORD=yourpasswordhere rocker/rstudio
shiny server is now running on localhost:3838 and RStudio on localhost:8787.
因为我正在使用 docker-compose,所以我将我的 docker-compose 文件更新为:
version: "3.5"
services:
ide-rstudio:
build:
context: .
ports:
- 8787:8787
- 3838:3838
environment:
ROOT: "TRUE"
ADD: "shiny"
PASSWORD: test
现在,当我像以前一样进入终端并输入:docker-compose build
,然后输入 docker-compose up -d
,我再次在 localhost:8787 看到 rstudio 登录页面。但是,如果我转到 localhost:3838,我会看到 Firefox 的 'connection was reset' 页面。好像什么都没有。
如何按照说明为我的容器添加光泽?
图像似乎缺少闪亮的安装程序。如果您 运行 没有 -d
并使用 rocker/rstudio:3.2.0
图像的相同撰写文件,您将在日志中看到 shiny
正在安装。它为我安装失败(缺少文件 /usr/local/lib/R/site-library/littler/examples/install2.r
有问题)但我找到了安装它的脚本。由于某种原因,脚本在 rocker/tidyverse:latest
中不存在(我不知道为什么,你最好问维护者)并且 ADD=shiny
没有效果。
我设法通过将该脚本注入 rocker/tidyverse:latest
来让事情正常进行,下面是你如何做到这一点。将以下内容保存为名为 add
:
的文件
#!/usr/bin/with-contenv bash
ADD=${ADD:=none}
## A script to add shiny to an rstudio-based rocker image.
if [ "$ADD" == "shiny" ]; then
echo "Adding shiny server to container..."
apt-get update && apt-get -y install \
gdebi-core \
libxt-dev && \
wget --no-verbose https://s3.amazonaws.com/rstudio-shiny-server-os-build/ubuntu-12.04/x86_64/VERSION -O "version.txt" && \
VERSION=$(cat version.txt) && \
wget --no-verbose "https://s3.amazonaws.com/rstudio-shiny-server-os-build/ubuntu-12.04/x86_64/shiny-server-$VERSION-amd64.deb" -O ss-latest.deb && \
gdebi -n ss-latest.deb && \
rm -f version.txt ss-latest.deb && \
install2.r -e --skipinstalled shiny rmarkdown && \
cp -R /usr/local/lib/R/site-library/shiny/examples/* /srv/shiny-server/ && \
rm -rf /var/lib/apt/lists/* && \
mkdir -p /var/log/shiny-server && \
chown shiny.shiny /var/log/shiny-server && \
mkdir -p /etc/services.d/shiny-server && \
cd /etc/services.d/shiny-server && \
echo '#!/bin/bash' > run && echo 'exec shiny-server > /var/log/shiny-server.log' >> run && \
chmod +x run && \
adduser rstudio shiny && \
cd /
fi
if [ $"$ADD" == "none" ]; then
echo "Nothing additional to add"
fi
然后将以下内容添加到您的 Dockefile
:
COPY add /etc/cont-init.d/add
RUN chmod +x /etc/cont-init.d/add
或者在本地申请执行权限,在运行时间内挂载。为此 运行 在本地执行以下操作:
chmod +x add
并将其添加到 docker-compose.yml
:
services:
ide-rstudio:
volumes: # this line and below
- ./add:/etc/cont-init.d/add
Documentation for rocker/rstudio docker container.
我可以使用 Docker 在 rstudio 中起床 运行,并在目录中设置以下内容:
Docker文件:
FROM rocker/tidyverse:latest
docker-撰写:
version: "3.5"
services:
ide-rstudio:
build:
context: .
ports:
- 8787:8787
environment:
ROOT: "TRUE"
PASSWORD: test
现在,如果我在终端中输入此目录并键入:docker-compose build
,然后是 docker-compose up -d
,然后导航到 localhost:8787,我会看到 rstudio 登录屏幕。到目前为止一切顺利。
我想根据文档向同一个容器添加光泽(而不是使用单独的光泽图像)。
在我 link 顶部的文档中说:
Add shiny server on start up with e ADD=shiny
docker run -d -p 3838:3838 -p 8787:8787 -e ADD=shiny -e PASSWORD=yourpasswordhere rocker/rstudio
shiny server is now running on localhost:3838 and RStudio on localhost:8787.
因为我正在使用 docker-compose,所以我将我的 docker-compose 文件更新为:
version: "3.5"
services:
ide-rstudio:
build:
context: .
ports:
- 8787:8787
- 3838:3838
environment:
ROOT: "TRUE"
ADD: "shiny"
PASSWORD: test
现在,当我像以前一样进入终端并输入:docker-compose build
,然后输入 docker-compose up -d
,我再次在 localhost:8787 看到 rstudio 登录页面。但是,如果我转到 localhost:3838,我会看到 Firefox 的 'connection was reset' 页面。好像什么都没有。
如何按照说明为我的容器添加光泽?
图像似乎缺少闪亮的安装程序。如果您 运行 没有 -d
并使用 rocker/rstudio:3.2.0
图像的相同撰写文件,您将在日志中看到 shiny
正在安装。它为我安装失败(缺少文件 /usr/local/lib/R/site-library/littler/examples/install2.r
有问题)但我找到了安装它的脚本。由于某种原因,脚本在 rocker/tidyverse:latest
中不存在(我不知道为什么,你最好问维护者)并且 ADD=shiny
没有效果。
我设法通过将该脚本注入 rocker/tidyverse:latest
来让事情正常进行,下面是你如何做到这一点。将以下内容保存为名为 add
:
#!/usr/bin/with-contenv bash
ADD=${ADD:=none}
## A script to add shiny to an rstudio-based rocker image.
if [ "$ADD" == "shiny" ]; then
echo "Adding shiny server to container..."
apt-get update && apt-get -y install \
gdebi-core \
libxt-dev && \
wget --no-verbose https://s3.amazonaws.com/rstudio-shiny-server-os-build/ubuntu-12.04/x86_64/VERSION -O "version.txt" && \
VERSION=$(cat version.txt) && \
wget --no-verbose "https://s3.amazonaws.com/rstudio-shiny-server-os-build/ubuntu-12.04/x86_64/shiny-server-$VERSION-amd64.deb" -O ss-latest.deb && \
gdebi -n ss-latest.deb && \
rm -f version.txt ss-latest.deb && \
install2.r -e --skipinstalled shiny rmarkdown && \
cp -R /usr/local/lib/R/site-library/shiny/examples/* /srv/shiny-server/ && \
rm -rf /var/lib/apt/lists/* && \
mkdir -p /var/log/shiny-server && \
chown shiny.shiny /var/log/shiny-server && \
mkdir -p /etc/services.d/shiny-server && \
cd /etc/services.d/shiny-server && \
echo '#!/bin/bash' > run && echo 'exec shiny-server > /var/log/shiny-server.log' >> run && \
chmod +x run && \
adduser rstudio shiny && \
cd /
fi
if [ $"$ADD" == "none" ]; then
echo "Nothing additional to add"
fi
然后将以下内容添加到您的 Dockefile
:
COPY add /etc/cont-init.d/add
RUN chmod +x /etc/cont-init.d/add
或者在本地申请执行权限,在运行时间内挂载。为此 运行 在本地执行以下操作:
chmod +x add
并将其添加到 docker-compose.yml
:
services:
ide-rstudio:
volumes: # this line and below
- ./add:/etc/cont-init.d/add