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 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')"] | |