ShinyStudio-Image icon indicating copy to clipboard operation
ShinyStudio-Image copied to clipboard

Make Compatible with R >= 4.0.0: rocker-versioned2

Open jtelleriar opened this issue 4 years ago • 0 comments

With R >= 4.0.0 the rocker image comes configured with Ubuntu 20.04 (https://github.com/rocker-org/rocker-versioned2).

I have tried to modify the Dockerfile in order to make it work, with no success.

ARG VER_RLANG="4.0.3"

FROM rocker/verse:${VER_RLANG} as rstudio

FROM scratch

COPY --from=rstudio / /

ARG VER_PYTHON="3.8"
ARG VER_SHINYPROXY="2.4.2"
ARG VER_VSCODE="3.8.0"
ARG TAG="latest"
ENV TAG=${TAG}

# essential vars
ENV DISABLE_AUTH true
ENV R_LIBS_USER /r-libs
ENV APPLICATION_LOGS_TO_STDOUT false

# add shiny immediately and expose port 3838.

RUN /rocker_scripts/install_shiny_server.sh

RUN apt-get update && \
    apt-get install -y apt-transport-https && \
    apt-get install -y curl nano

# install Java 8 and ShinyProxy
RUN apt-get install -y openjdk-8-jdk-headless && \
    mkdir -p /opt/shinyproxy && \
    wget -nv "https://www.shinyproxy.io/downloads/shinyproxy-${VER_SHINYPROXY}.jar" -O /opt/shinyproxy/shinyproxy.jar

COPY configs/shinyproxy/grid-layout /opt/shinyproxy/templates/grid-layout
COPY configs/shinyproxy/application.yml /opt/shinyproxy/application.yml

# create shared /r-libs directory and ensure it's writeable by all.
RUN mkdir /r-libs && \
    echo ".libPaths( c( '/r-libs', .libPaths() ) )" >> /usr/local/lib/R/etc/Rprofile.site

# install R packages
RUN R -e "install.packages(c('tidyverse', 'tidymodels', 'reticulate', 'DBI', 'odbc', 'flexdashboard', 'DT'))" && \
    chmod -R 777 /r-libs

COPY samples /srv/shiny-server

# setup python with miniconda.
ENV VIRTUAL_ENV=py3
RUN wget -nv https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh && \
    bash /tmp/miniconda.sh -b -p /conda3 && \
    rm -f /tmp/miniconda.sh && \
    /conda3/bin/conda create -y -n $VIRTUAL_ENV python=${VER_PYTHON} && \
    chmod -R 777 /conda3 && \
    /conda3/bin/conda install -y --name $VIRTUAL_ENV jupyter pylint openssl

# set path
ENV PATH "/conda3/bin:${PATH}"
RUN echo "export PATH=\"/conda3/bin:\${PATH}\"" >> /etc/profile && \
    echo ". activate $VIRTUAL_ENV" >> /etc/profile && \
    echo '$env:PATH = "/conda3/envs/$($env:VIRTUAL_ENV)/bin:" + $env:PATH'

# install VS code-server.
RUN wget -nv "https://github.com/cdr/code-server/releases/download/v${VER_VSCODE}/code-server-${VER_VSCODE}-linux-amd64.tar.gz" -O /tmp/vs-code-server.tar.gz && \
    mkdir /tmp/vs-code-server && \
    tar -xzf /tmp/vs-code-server.tar.gz --strip 1 --directory /tmp/vs-code-server && \
    mv -f /tmp/vs-code-server/code-server /usr/local/bin/code-server && \
    rm -rf /tmp/vs-code-server.tar.gz && \
    # unsure why this is necessary, but it solves a fatal 'file not found' error.
    mkdir -p /src/packages/server/build/web && \
    echo '' > /src/packages/server/build/web/index.html

# install SQL Server odbc driver.
RUN apt-get install -y unixodbc && \
    wget -nv https://packages.microsoft.com/ubuntu/20.04/prod/pool/main/m/msodbcsql17/msodbcsql17_17.6.1.1-1_amd64.deb -O /tmp/msodbcsql.deb && \             
    ACCEPT_EULA=Y dpkg -i /tmp/msodbcsql.deb && \
    rm -f /tmp/msodbcsql.deb

# install PostgreSQL odbc driver.
RUN apt-get install -y odbc-postgresql

# custom configs.
COPY configs/rstudio/rserver.conf /etc/rstudio/rserver_custom.conf

COPY configs/vscode/install-vscode-python.sh /install-vscode-python.sh

COPY configs/odbc/odbcinst.ini /etc/odbcinst.ini
COPY configs/odbc/odbc.ini /etc/odbc.ini

# copy custom run commands.
COPY configs/rstudio/run /etc/services.d/rstudio/run
COPY configs/vscode/run /etc/services.d/vscode/run
COPY configs/shinyproxy/run /etc/services.d/shinyproxy/run

# copy custom start command and make it executable.
COPY configs/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT [ "/entrypoint.sh" ]

CMD [ "shinyproxy" ]

jtelleriar avatar Jan 08 '21 19:01 jtelleriar