Spaces:
				
			
			
	
			
			
		Sleeping
		
	
	
	
			
			
	
	
	
	
		
		
		Sleeping
		
	| #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 dvats-rstudio-base:latest | |
| SHELL [ "/bin/bash", "--login", "-c" ] | |
| ############### | |
| # Ensure vars # (Only for local test - DON'T USE IT IN HUGGINGFACE. ENSURE .env IS NOT ACCESIBLE IN THE WEB, USE THEIR SECRET MANAGEMENT) | |
| ############### | |
| RUN echo "--> ARGS" | |
| ARG USER_NAME \ | |
| USER_ID \ | |
| GROUP_ID \ | |
| WANDB_API_KEY \ | |
| WANDB_ENTITY \ | |
| WANDB_PROJECT \ | |
| GH_TOKEN | |
| RUN echo "--> ARGS -> ENV" | |
| ENV USER_NAME=$USER_NAME \ | |
| USER_ID=$USER_ID \ | |
| GROUP_ID=$GROUP_ID \ | |
| WANDB_ENTITY=$WANDB_ENTITY \ | |
| WANDB_API_KEY=$WANDB_API_KEY \ | |
| GH_TOKEN=$ghtoken \ | |
| WANDB_PROJECT=$WANDB_PROJECT | |
| RUN echo "--> Setup ENV variables" | |
| ENV RETICULATE_PYTHON_ENV=/home/${USER_NAME}/env \ | |
| ROOT=TRUE \ | |
| RETICULATE_MINICONDA_PATH=/home/${USER_NAME}/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/${USER_NAME}" | |
| ########### | |
| # Volumes # | |
| ########### | |
| 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 | |
| RUN echo "--> Prior installations" \ | |
| apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A4B469963BF863CC \ | |
| set -e; \ | |
| apt-get update --fix-missing \ | |
| && apt-get install -y \ | |
| python3-pip wget bzip2 curl \ | |
| git sudo libarchive-dev libtiff5-dev zsh\ | |
| #python3 -m pip install --upgrade pip \ | |
| python3-venv libxt-dev \ | |
| && apt-get clean \ | |
| && rm -rf /var/lib/apt/lists/* | |
| ## Install R packages | |
| #COPY docker/DESCRIPTION /tmp/ | |
| COPY --chown=${USER_ID}:${GROUP_ID} docker/DESCRIPTION /tmp/ | |
| RUN ls -la /tmp/ && sleep 5 | |
| RUN echo "--> Install R packages" | |
| #RUN R -e "install.packages(deps_path = '/tmp/DESCRIPTION', remotes::dev_package_deps(dependencies = TRUE), repos = NULL)" | |
| RUN R -e "devtools::install_deps('/tmp/', dependencies = TRUE)" | |
| #RUN R -e "install.packages(c('shiny', 'pals', 'shinyWidgets', 'dygraphs', 'shinycssloaders', 'shinyjs', 'Rcpp', 'reactlog', 'pals', 'feather', 'fasttime', 'zoo', 'shinyWidgets'))" | |
| #RUN R -e "remotes::install_github('r-lib/later')" | |
| #RUN R -e "remotes::install_github('apache/arrow/r')" | |
| ## Install reticulate and create virtual environment using default Ubuntu installed Python | |
| #RUN R -e "install.packages('reticulate')" | |
| ENV ENV_PREFIX $HOME/env | |
| RUN echo "---> Make sudo & setup sudoers" | |
| RUN echo "$(id)" | |
| ARG RETICULATE_MINICONDA_PATH=/usr/local/share/r-miniconda | |
| ARG RETICULATE_PYTHON_ENV=/usr/virtualenvs/venv_shiny_app | |
| ENV RETICULATE_PYTHON=${RETICULATE_PYTHON_ENV}/bin/python/ | |
| RUN echo "---> RETICULATE PYTHONS" | |
| RUN echo "RETICULATE_PYTHON_ENV=${RETICULATE_PYTHON_ENV}" >> ${HOME}/.Renviron | |
| RUN echo "RETICULATE_PYTHON=${RETICULATE_PYTHON}" >> ${HOME}/.Renviron | |
| RUN echo "---> Export W&B" | |
| ## Export W&B environment variable to Rstudio | |
| ARG WANDB_API_KEY | |
| RUN echo "WANDB_API_KEY=${WANDB_API_KEY}" >> ${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" >> ~/.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 )" | |
| #RUN echo "--> Setup miniconda & Mamba" | |
| #RUN echo ". ${HOME}miniconda3/etc/profile.d/conda.sh" >> ${HOME}/rstudio/.bashrc | |
| #RUN echo "--> Conda activate" | |
| # Make bash automatically activate the conda environment | |
| #RUN echo "conda activate ${ENV_PREFIX}" >> ${HOME}/rstudio/.bashrc | |
| #echo "export WANDB_ENTITY=${WANDB_ENTITY:-default}" >> ${HOME}/.bashrc | |
| # echo "WANDB_ENTITY=${WANDB_ENTITY:-default}" >> ${HOME}/.Renviron | |
| # 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 | |
| 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')"] | |
| # CMD ["/init"] | |