我能够在rstudio中使用Docker启动并运行,目录中设置了以下内容:
Dockerfile:
FROM rocker/tidyverse:latest码头工人-组成:
version: "3.5"
services:
ide-rstudio:
build:
context: .
ports:
- 8787:8787
environment:
ROOT: "TRUE"
PASSWORD: test现在,如果我在终端中输入这个dir并键入:docker-compose build,然后是docker-compose up -d,然后导航到localhost:8787,我会看到rstudio登录屏幕。到目前一切尚好。
我想在每个文档的同一个容器中添加闪亮(而不是使用单独的闪亮图像)。
在我链接到的文档顶部,上面写着:
在使用e ADD=shiny启动时添加闪亮的服务器
docker run -d -p 3838:3838 -p 8787:8787 -e ADD=shiny -e PASSWORD=yourpasswordhere rocker/rstudio
闪亮的服务器现在运行在localhost上:3838和RStudio在localhost上:8787。
由于我使用的是坞-撰写文件,所以我更新了我的坞-撰写文件如下:
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 I’页面。好像什么都没有。
根据说明,我怎样才能给我的容器添加光亮呢?
发布于 2021-01-14 14:39:01
这张图片似乎缺少了闪亮的安装程序。如果您不使用-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/addhttps://stackoverflow.com/questions/65646697
复制相似问题