使用 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