#R-Shiny template https://huggingface.co/spaces/posit/shiny-for-r-template/tree/main #Py-shiny template https://huggingface.co/spaces/posit/gptneox-chat ############################# # RSTUDIO-SERVER # # VOLUME DOCKERFILE # #***************************# # Set up a jupyter-lab for # # developing using deepvats # ############################# ############## # Base image # ############## # Adds rstudio server, tiyverse, devtools to rocker/cuda FROM misantamaria/dvats-rstudio:0 SHELL [ "/bin/bash", "--login", "-c" ] ############### # Ensure vars # ############### RUN echo "--> ARGS" ARG USER_NAME=user \ USER_ID=1000 \ GROUP_ID \ WANDB_ENTITY \ WANDB_PROJECT \ RUN echo "--> ARGS -> ENV" ENV USER_NAME=$USER_NAME \ USER_ID=$USER_ID \ GROUP_ID=$GROUP_ID \ WANDB_ENTITY=$WANDB_ENTITY \ WANDB_PROJECT=$WANDB_PROJECT RUN echo "--> Setup ENV variables" ENV RETICULATE_PYTHON_ENV=/home/env \ ROOT=TRUE \ RETICULATE_MINICONDA_PATH=/home//miniconda \ CUDA_VISIBLE_DEVICES=0,1,2 \ ENV_VARS=WANDB_ENTITY,WANDB_PROJECT,USER_NAME,USER_ID,GROUP_ID,PASSWORD,ROOT,CUDA_VISIBLE_DEVICES\ HOME="/home/" RUN echo "---> RETICULATE PYTHONS" RUN echo "RETICULATE_PYTHON_ENV=${RETICULATE_PYTHON_ENV}" >> ${HOME}/.Renviron RUN echo "RETICULATE_PYTHON=${RETICULATE_PYTHON}" >> ${HOME}/.Renviron ENV MINICONDA_VERSION=4.10.3 \ #ENV MINICONDA_VERSION=23.9.0 \ CONDA_DIR=$HOME/miniconda3 \ # Make non-activate conda commands available PATH=$CONDA_DIR/bin:$PATH \ PROJECT_DIR=$HOME RUN echo "HOME: ${HOME} | CONDA_DIR = ${CONDA_DIR}" \ #-- Install MINICONDA && wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-py38_$MINICONDA_VERSION-Linux-x86_64.sh -O ~/miniconda.sh \ && chmod +x ~/miniconda.sh \ && ~/miniconda.sh -b -p $CONDA_DIR \ && rm ~/miniconda.sh # Make conda activate command available from /bin/bash --login shells RUN echo ". $CONDA_DIR/etc/profile.d/conda.sh" >> $HOME/.profile # make conda activate command available from /bin/bash --interative shells RUN conda init bash \ # create a project directory inside user home && mkdir -p $PROJECT_DIR WORKDIR $PROJECT_DIR ########################## # Install & update MAMBA # ########################## ENV ENV_PREFIX $PROJECT_DIR/env RUN conda install --name base --channel conda-forge mamba \ && mamba update --name base --channel defaults conda #-- Build the mamba environment RUN mamba install conda-lock -c conda-forge COPY --chown=$UID:$GID docker/environment.yml docker/requirements.txt /tmp/ #RUN mamba lock -f /tmp/environment.yml --lockfile /tmp/environment.lock #RUN mamba create --prefix ${ENV_PREFIX} --file /tmp/environment.lock RUN mamba env create -vv --prefix ${ENV_PREFIX} --file /tmp/environment.yml RUN conda clean --all --yes # run the postBuild script to install the JupyterLab extensions COPY --chown=$UID:$GID docker/postBuild /usr/local/bin RUN chmod u+x /usr/local/bin/postBuild \ && conda activate $ENV_PREFIX \ && /usr/local/bin/postBuild \ && conda deactivate \ # Make bash automatically activate the conda environment && echo "conda activate $ENV_PREFIX" >> ~/.bashrc RUN chmod u+x /usr/local/bin/postBuild \ && conda activate $ENV_PREFIX \ && /usr/local/bin/postBuild \ && conda deactivate \ # Make bash automatically activate the conda environment && echo "conda activate $ENV_PREFIX" >> ~/.bashrc RUN conda list --prefix ${ENV_PREFIX} RUN echo "--> rewrrite miniconda path" # Rewrite the miniconda path environment in case it has been redefined in the compose file RUN echo "RETICULATE_MINICONDA_PATH=${RETICULATE_MINICONDA_PATH}" >> ${HOME}/.Renviron RUN echo "---> Make non-activate conda commands available" RUN # make non-activate conda commands available ENV PATH=${RETICULATE_MINICONDA_PATH}/bin:${PATH} RUN echo "--> Permissions" RUN echo "$(id )" ### Copy deepvats RUN echo "---> Setup volumes" \ echo ${HOME} \ echo ${USER_NAME}"|"${USER_ID}"|"${GROUP_ID} COPY --chown=${USER_ID}:${GROUP_ID} ../r_shiny_app $HOME/app COPY --chown=${USER_ID}:${GROUP_ID} ${LOCAL_DATA_PATH} $HOME/data/ COPY --chown=${USER_ID}:${GROUP_ID} ../dvats ${HOME}/dvats # Define an array of environment variable names from the ENV_VARS Compose variable #ARG ENV_VARS=ENV_VARS #RUN echo "---> Setup variables" && \ # IFS=',' read -ra NAMES <<< "ENV_VARS" && \ # for ENV_VAR_NAsME in "${NAMES[@]}"; do \ #echo "$ENV_VARS" | tr ',' '\n' | while read ENV_VAR_NAME; do \ # ENV_VAR_VALUE="${!ENV_VAR_NAME:-default}"; \ # echo "$ENV_VAR_NAME=$ENV_VAR_VALUE"; \ # done > ${HOME}/.Renviron # Install deepvats RUN pip install -e /home/${USER_NAME}/work RUN echo "--> Go!" CMD ["R", "--quiet", "-e", "shiny::runApp(host='0.0.0.0', port=${RSTUDIO_PORT:-3838}, launch.browser = FALSE, appDir = '/home/${USER_NAME}/app')"]