作为实例运行奇异容器时,闪亮的应用程序不可用

时间:2019-05-23 20:39:27

标签: r docker shiny containers singularity-container

我从docker映像kfoltynski/shinyproxy-demo:singularity构建了奇异容器。当我运行

singularity run shiny.simg 3839

发光的应用程序在localhost:3839上可用,但是在运行奇异容器作为实例之后

singularity instance start shiny.simg shiny 3839

不是。为什么?

复制步骤:

Dockerfile

FROM openanalytics/r-base

MAINTAINER Tobias Verbeke "Tazovsky"

RUN apt-get update && apt-get install -y \
    sudo \
    pandoc \
    pandoc-citeproc \
    libcurl4-gnutls-dev \
    libcairo2-dev \
    libxt-dev \
    libssl-dev \
    libssh2-1-dev \
    libssl1.0.0

# packages needed for basic shiny functionality
RUN R -e "install.packages(c('shiny', 'rmarkdown'), repos='https://cloud.r-project.org')"

# install shinyproxy package with demo shiny application
COPY shinyproxy /shinyproxy
RUN R CMD INSTALL /shinyproxy
RUN rm /shinyproxy

# set host and port
COPY Rprofile.site /usr/lib/R/etc/

EXPOSE 3838

ENV PORT=3839

CMD ["R", "-e", "shinyproxy::run_01_hello(as.numeric(Sys.getenv(\"PORT\")))"]

奇异性定义/配方文件Singularity.recipe

Bootstrap: docker

From: kfoltynski/shinyproxy-demo:singularity

%environment

    export PORT=3839

%runscript

    echo "Running Shiny app on port $*"

    exec R -e "shinyproxy::run_01_hello($@)"

构建奇异图片shiny.simg

 sudo singularity build shiny.simg Singularity.recipe

运行容器:

singularity run shiny.simg 3839 # app is available on port 3839

将容器作为实例运行:

singularity instance start shiny.simg shiny 3839 # app is not available on port 3839

为什么运行奇异容器作为实例时应用程序不可用?

1 个答案:

答案 0 :(得分:0)

singularity instance start shiny.simg shiny 3839正在创建并启动一个名为3839的新实例,并且没有将其作为参数传递给%runscript。要获得所需的响应,您需要运行:

singularity instance start shiny.simg shiny_instance
singularity run instance://shiny_instance 3839

启动实例时,不会调用%runscript块。如果希望启动实例时运行进程,则需要使用%startscript指令shown in the docs here

例如

Bootstrap: docker

From: kfoltynski/shinyproxy-demo:singularity

%environment
    export PORT=3839

%runscript
    echo "Running Shiny app on port $*"
    exec R -e "shinyproxy::run_01_hello($@)"

%startscript
    exec R -e "shinyproxy::run_01_hello($@)"