File size: 4,910 Bytes
548f7d3
 
 
0b2c32f
 
 
 
 
 
 
a45cd99
0b2c32f
 
 
 
04a01cd
0cb24ab
0b2c32f
 
a45cd99
8d233da
a45cd99
e7177ab
00384fe
 
e7177ab
 
 
04a01cd
e7177ab
 
 
 
 
 
 
 
 
8d233da
e7177ab
8d233da
e7177ab
 
8d233da
a45cd99
95feba1
0b2c32f
 
 
 
f17cc6c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
00384fe
f17cc6c
 
 
 
 
00384fe
f17cc6c
 
 
 
 
 
 
 
 
 
 
 
982c3d5
f17cc6c
 
 
 
 
 
 
982c3d5
f17cc6c
6fd6bab
56bf83e
 
f17cc6c
 
 
 
 
6fd6bab
f17cc6c
 
 
 
0b2c32f
 
95feba1
39d3e97
f8d6c41
c12b4db
fe03d25
 
cf03fa9
 
00384fe
 
 
 
 
 
 
 
 
cf03fa9
 
04a01cd
 
 
 
4cca4a8
04a01cd
 
 
cf03fa9
00384fe
4cca4a8
0cb24ab
f8d6c41
548f7d3
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#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')"]