|
1 | | -FROM node:14.21.3-bullseye as jsbuild |
| 1 | +FROM node:18 as jsbuild |
2 | 2 |
|
3 | | -WORKDIR /app |
4 | | - |
5 | | -COPY --chown=1000:1000 webapp/package.json . |
6 | | -COPY --chown=1000:1000 webapp/yarn.lock . |
| 3 | +ENV FOLDER=netpyne |
7 | 4 |
|
| 5 | +WORKDIR $FOLDER/webapp |
| 6 | +COPY webapp/package.json . |
| 7 | +COPY webapp/yarn.lock . |
8 | 8 |
|
9 | 9 | RUN yarn install --network-timeout 1000000000 |
10 | 10 |
|
11 | | -COPY webapp/ . |
| 11 | +COPY webapp . |
12 | 12 | RUN yarn build-dev |
13 | 13 |
|
14 | | - |
15 | | -RUN rm -Rf node_modules/* |
| 14 | +### Download on a separate stage to run in parallel with buildkit |
| 15 | +FROM jupyter/base-notebook:hub-1.5.0 as downloads |
| 16 | +USER root |
| 17 | +RUN wget --no-check-certificate -O /nyhead.mat https://www.parralab.org/nyhead/sa_nyhead.mat |
16 | 18 |
|
17 | 19 | ### |
18 | 20 | FROM jupyter/base-notebook:hub-1.5.0 |
19 | 21 | ENV NB_UID=jovyan |
20 | 22 | ENV FOLDER=netpyne |
21 | | -ARG BUILD_ARGS="" |
22 | | -ARG WORKSPACE_VERSION=master |
23 | | -# ARG GEPPETTO_VERSION=development |
24 | | -# ARG NETPYNE_VERSION=master |
25 | | - |
26 | | -ENV FOLDER=/home/jovyan/work/NetPyNE-UI |
| 23 | +ENV NP_LFPYKIT_HEAD_FILE=/home/jovyan/nyhead.mat |
27 | 24 |
|
28 | 25 | USER root |
29 | 26 |
|
30 | 27 | RUN rm -rf /var/lib/apt/lists |
31 | 28 | RUN apt-get update -qq &&\ |
32 | | - apt-get install python3-tk vim nano unzip git make libtool g++ -qq pkg-config libfreetype6-dev libpng-dev libopenmpi-dev openjdk-11-jre-headless -y -y |
| 29 | + apt-get install python3-tk vim nano unzip git make libtool g++ -qq pkg-config libfreetype6-dev libpng-dev libopenmpi-dev -y |
| 30 | +RUN apt-get install openjdk-11-jre-headless -y |
33 | 31 | RUN conda install python=3.7 -y |
34 | 32 |
|
| 33 | + |
35 | 34 | WORKDIR $FOLDER |
36 | | -COPY --chown=1000:1000 requirements.txt requirements.txt |
37 | | -RUN --mount=type=cache,target=/root/.cache python -m pip install --upgrade pip && pip install -r requirements.txt --prefer-binary |
| 35 | +COPY --chown=1000:1000 requirements.txt requirements.txt |
| 36 | +RUN --mount=type=cache,target=/root/.cache python -m pip install --upgrade pip &&\ |
| 37 | + pip install -r requirements.txt --prefer-binary |
| 38 | + |
| 39 | + |
| 40 | +# ToDo: fixme, for now remove the jupyter hub config json file because it overrides the default |
| 41 | +# and thus removes the frame ancestor cors settings |
| 42 | +RUN rm -f ~/.jupyter/*.json |
| 43 | +RUN chown $NB_UID . |
| 44 | +RUN chown $NB_UID /opt |
| 45 | +RUN rm -Rf workspace |
| 46 | +# sym link workspace pvc to $FOLDER |
| 47 | +RUN mkdir -p /opt/workspace |
| 48 | +RUN mkdir -p /opt/user |
| 49 | + |
| 50 | +COPY netpyne_ui netpyne_ui |
| 51 | +COPY utilities utilities |
| 52 | +COPY setup.py . |
| 53 | +COPY tests tests |
| 54 | +COPY NetPyNE-UI . |
| 55 | +COPY README.rst . |
| 56 | +COPY requirements-test.txt . |
| 57 | + |
| 58 | + |
| 59 | +USER $NB_UID |
38 | 60 |
|
39 | | -COPY --chown=jovyan:1000 . . |
40 | | -COPY --from=jsbuild --chown=jovyan:1000 /app webapp |
41 | 61 |
|
42 | 62 |
|
| 63 | + |
| 64 | +ENV NEURON_HOME=/opt/conda |
| 65 | + |
| 66 | + |
| 67 | +USER root |
| 68 | + |
43 | 69 | RUN jupyter nbextension install --py --symlink --sys-prefix jupyter_geppetto |
44 | 70 | RUN jupyter nbextension enable --py --sys-prefix jupyter_geppetto |
45 | 71 | RUN jupyter nbextension enable --py --sys-prefix widgetsnbextension |
46 | 72 | RUN jupyter serverextension enable --py --sys-prefix jupyter_geppetto |
47 | 73 |
|
48 | | -RUN python utilities/install.py ${BUILD_ARGS} --workspace $WORKSPACE_VERSION |
| 74 | +ARG BUILD_ARGS="" |
| 75 | +ARG WORKSPACE_VERSION=master |
49 | 76 |
|
50 | | -RUN jupyter labextension disable @jupyterlab/hub-extension |
| 77 | +RUN --mount=type=cache,target=/root/.cache python -m pip install --upgrade pip &&\ |
| 78 | + python utilities/install.py ${BUILD_ARGS} --workspace $WORKSPACE_VERSION --npm-skip |
51 | 79 |
|
52 | | -RUN chown $NB_UID . |
53 | | -RUN chown -R $NB_UID workspace |
54 | 80 |
|
55 | | -# Temp fixes for eeg plots |
56 | | -ENV NEURON_HOME=/opt/conda |
57 | | -# For lfpykit 0.4 |
58 | | -# RUN wget -P $(pip show LFPykit | grep "Location:" | awk '{print $2"/lfpykit"}') https://www.parralab.org/nyhead/sa_nyhead.mat |
59 | | -# For lpfykit 0.5 |
60 | | -ENV NP_LFPYKIT_HEAD_FILE=/home/jovyan/nyhead.mat |
61 | | -RUN wget --no-check-certificate -O $NP_LFPYKIT_HEAD_FILE https://www.parralab.org/nyhead/sa_nyhead.mat |
| 81 | +RUN mv workspace /opt/workspace/tutorials |
| 82 | +RUN chown -R $NB_UID /opt/workspace |
| 83 | +RUN ln -s /opt/workspace workspace |
| 84 | + |
| 85 | +RUN jupyter labextension disable @jupyterlab/hub-extension |
| 86 | + |
| 87 | +COPY --from=downloads --chown=1000:1000 /nyhead.mat $NP_LFPYKIT_HEAD_FILE |
| 88 | +COPY --from=jsbuild --chown=1000:1000 $FOLDER/webapp/build webapp/build |
62 | 89 |
|
| 90 | +RUN chown -R $NB_UID /home/jovyan/.jupyter |
| 91 | +RUN touch app.log && chown $NB_UID app.log |
63 | 92 | USER $NB_UID |
64 | 93 |
|
| 94 | + |
65 | 95 | EXPOSE 8888 |
66 | 96 |
|
| 97 | +ENTRYPOINT ["tini", "-g", "--"] |
| 98 | + |
| 99 | + |
67 | 100 |
|
| 101 | +CMD ./NetPyNE-UI |
0 commit comments