|
1 |
| -# Copyright (c) 2016, The developers of the Stanford CRN |
2 |
| -# All rights reserved. |
| 1 | +# Generated by Neurodocker v0.3.1-2-g4dfcf56. |
3 | 2 | #
|
4 |
| -# Redistribution and use in source and binary forms, with or without |
5 |
| -# modification, are permitted provided that the following conditions are met: |
| 3 | +# Thank you for using Neurodocker. If you discover any issues |
| 4 | +# or ways to improve this software, please submit an issue or |
| 5 | +# pull request on our GitHub repository: |
| 6 | +# https://github.com/kaczmarj/neurodocker |
6 | 7 | #
|
7 |
| -# * Redistributions of source code must retain the above copyright notice, this |
8 |
| -# list of conditions and the following disclaimer. |
9 |
| -# |
10 |
| -# * Redistributions in binary form must reproduce the above copyright notice, |
11 |
| -# this list of conditions and the following disclaimer in the documentation |
12 |
| -# and/or other materials provided with the distribution. |
13 |
| -# |
14 |
| -# * Neither the name of crn_base nor the names of its |
15 |
| -# contributors may be used to endorse or promote products derived from |
16 |
| -# this software without specific prior written permission. |
17 |
| -# |
18 |
| -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
19 |
| -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
20 |
| -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
21 |
| -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
22 |
| -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
23 |
| -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
24 |
| -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
25 |
| -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
26 |
| -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
27 |
| -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 8 | +# Timestamp: 2017-10-02 22:55:57 |
28 | 9 |
|
| 10 | +FROM kaczmarj/nipype:base |
29 | 11 |
|
30 |
| -# |
31 |
| -# Based on https://github.com/poldracklab/fmriprep/blob/9c92a3de9112f8ef1655b876de060a2ad336ffb0/Dockerfile |
32 |
| -# |
33 |
| -FROM nipype/base:latest |
34 |
| -MAINTAINER The nipype developers https://github.com/nipy/nipype |
35 |
| - |
36 |
| -ARG PYTHON_VERSION_MAJOR=3 |
37 |
| - |
38 |
| -# Installing and setting up miniconda |
39 |
| -RUN curl -sSLO https://repo.continuum.io/miniconda/Miniconda${PYTHON_VERSION_MAJOR}-4.2.12-Linux-x86_64.sh && \ |
40 |
| - bash Miniconda${PYTHON_VERSION_MAJOR}-4.2.12-Linux-x86_64.sh -b -p /usr/local/miniconda && \ |
41 |
| - rm Miniconda${PYTHON_VERSION_MAJOR}-4.2.12-Linux-x86_64.sh |
42 |
| - |
43 |
| -ENV PATH=/usr/local/miniconda/bin:$PATH \ |
44 |
| - LANG=C.UTF-8 \ |
45 |
| - LC_ALL=C.UTF-8 \ |
46 |
| - ACCEPT_INTEL_PYTHON_EULA=yes \ |
47 |
| - MKL_NUM_THREADS=1 \ |
48 |
| - OMP_NUM_THREADS=1 |
49 |
| -# MKL/OMP_NUM_THREADS: unless otherwise specified, each process should |
50 |
| -# only use one thread - nipype will handle parallelization |
51 |
| - |
52 |
| -# Installing precomputed python packages |
53 |
| -ARG PYTHON_VERSION_MINOR=6 |
54 |
| -RUN conda config --add channels conda-forge; sync && \ |
55 |
| - conda config --set always_yes yes --set changeps1 no; sync && \ |
56 |
| - conda install -y python=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} \ |
57 |
| - mkl \ |
58 |
| - numpy \ |
59 |
| - scipy \ |
60 |
| - scikit-learn \ |
61 |
| - matplotlib \ |
62 |
| - pandas \ |
63 |
| - libxml2 \ |
64 |
| - libxslt \ |
65 |
| - traits=4.6.0 \ |
66 |
| - psutil \ |
67 |
| - icu=58.1 && \ |
68 |
| - sync; |
69 |
| - |
70 |
| -# matplotlib cleanups: set default backend, precaching fonts |
71 |
| -RUN sed -i 's/\(backend *: \).*$/\1Agg/g' /usr/local/miniconda/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/matplotlib/mpl-data/matplotlibrc && \ |
72 |
| - python -c "from matplotlib import font_manager" |
73 |
| - |
74 |
| -# Install CI scripts |
75 |
| -COPY docker/files/run_* /usr/bin/ |
76 |
| -RUN chmod +x /usr/bin/run_* |
77 |
| - |
78 |
| -# Replace imglob with a Python3 compatible version |
79 |
| -COPY nipype/external/fsl_imglob.py /usr/bin/fsl_imglob.py |
80 |
| -RUN rm -rf ${FSLDIR}/bin/imglob && \ |
81 |
| - chmod +x /usr/bin/fsl_imglob.py && \ |
82 |
| - ln -s /usr/bin/fsl_imglob.py ${FSLDIR}/bin/imglob |
83 |
| - |
84 |
| -# Installing dev requirements (packages that are not in pypi) |
85 |
| -WORKDIR /src/ |
86 |
| -COPY requirements.txt requirements.txt |
87 |
| -RUN pip install -r requirements.txt && \ |
88 |
| - rm -rf ~/.cache/pip |
89 |
| - |
90 |
| -RUN git clone https://github.com/INCF/pybids.git && \ |
91 |
| - cd pybids && python setup.py develop |
92 |
| - |
93 |
| -# Installing nipype |
94 |
| -COPY . /src/nipype |
95 |
| -RUN cd /src/nipype && \ |
96 |
| - pip install -e .[all] && \ |
97 |
| - rm -rf ~/.cache/pip |
98 |
| - |
99 |
| -WORKDIR /work/ |
| 12 | +ARG DEBIAN_FRONTEND=noninteractive |
| 13 | + |
| 14 | +#---------------------------------------------------------- |
| 15 | +# Install common dependencies and create default entrypoint |
| 16 | +#---------------------------------------------------------- |
| 17 | +ENV LANG="en_US.UTF-8" \ |
| 18 | + LC_ALL="C.UTF-8" \ |
| 19 | + ND_ENTRYPOINT="/neurodocker/startup.sh" |
| 20 | +RUN apt-get update -qq && apt-get install -yq --no-install-recommends \ |
| 21 | + apt-utils bzip2 ca-certificates curl locales unzip \ |
| 22 | + && apt-get clean \ |
| 23 | + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ |
| 24 | + && localedef --force --inputfile=en_US --charmap=UTF-8 C.UTF-8 \ |
| 25 | + && chmod 777 /opt && chmod a+s /opt \ |
| 26 | + && mkdir -p /neurodocker \ |
| 27 | + && if [ ! -f "$ND_ENTRYPOINT" ]; then \ |
| 28 | + echo '#!/usr/bin/env bash' >> $ND_ENTRYPOINT \ |
| 29 | + && echo 'set +x' >> $ND_ENTRYPOINT \ |
| 30 | + && echo 'if [ -z "$*" ]; then /usr/bin/env bash; else $*; fi' >> $ND_ENTRYPOINT; \ |
| 31 | + fi \ |
| 32 | + && chmod -R 777 /neurodocker && chmod a+s /neurodocker |
| 33 | +ENTRYPOINT ["/neurodocker/startup.sh"] |
| 34 | + |
| 35 | +LABEL maintainer="The nipype developers https://github.com/nipy/nipype" |
| 36 | + |
| 37 | +ENV MKL_NUM_THREADS="1" \ |
| 38 | + OMP_NUM_THREADS="1" |
| 39 | + |
| 40 | +# Create new user: neuro |
| 41 | +RUN useradd --no-user-group --create-home --shell /bin/bash neuro |
| 42 | +USER neuro |
| 43 | + |
| 44 | +#------------------ |
| 45 | +# Install Miniconda |
| 46 | +#------------------ |
| 47 | +ENV CONDA_DIR=/opt/conda \ |
| 48 | + PATH=/opt/conda/bin:$PATH |
| 49 | +RUN echo "Downloading Miniconda installer ..." \ |
| 50 | + && miniconda_installer=/tmp/miniconda.sh \ |
| 51 | + && curl -sSL -o $miniconda_installer https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh \ |
| 52 | + && /bin/bash $miniconda_installer -b -p $CONDA_DIR \ |
| 53 | + && rm -f $miniconda_installer \ |
| 54 | + && conda config --system --prepend channels conda-forge \ |
| 55 | + && conda config --system --set auto_update_conda false \ |
| 56 | + && conda config --system --set show_channel_urls true \ |
| 57 | + && conda update -y -q --all && sync \ |
| 58 | + && conda clean -tipsy && sync |
100 | 59 |
|
| 60 | +#------------------------- |
| 61 | +# Create conda environment |
| 62 | +#------------------------- |
| 63 | +RUN conda create -y -q --name neuro \ |
| 64 | + && sync && conda clean -tipsy && sync |
| 65 | +ENV PATH=/opt/conda/envs/neuro/bin:$PATH |
| 66 | + |
| 67 | +COPY ["docker/files/run_builddocs.sh", "docker/files/run_examples.sh", "docker/files/run_pytests.sh", "nipype/external/fsl_imglob.py", "/usr/bin/"] |
| 68 | + |
| 69 | +COPY [".", "/src/nipype"] |
| 70 | + |
| 71 | +USER root |
| 72 | + |
| 73 | +# User-defined instruction |
| 74 | +RUN chmod 777 -R /src/nipype |
| 75 | + |
| 76 | +USER neuro |
| 77 | + |
| 78 | +ARG PYTHON_VERSION_MAJOR="3" |
| 79 | +ARG PYTHON_VERSION_MINOR="6" |
101 | 80 | ARG BUILD_DATE
|
102 | 81 | ARG VCS_REF
|
103 | 82 | ARG VERSION
|
104 |
| -LABEL org.label-schema.build-date=$BUILD_DATE \ |
| 83 | + |
| 84 | +#------------------------- |
| 85 | +# Update conda environment |
| 86 | +#------------------------- |
| 87 | +RUN conda install -y -q --name neuro python=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} \ |
| 88 | + icu=58.1 \ |
| 89 | + libxml2 \ |
| 90 | + libxslt \ |
| 91 | + matplotlib \ |
| 92 | + mkl \ |
| 93 | + numpy \ |
| 94 | + pandas \ |
| 95 | + psutil \ |
| 96 | + scikit-learn \ |
| 97 | + scipy \ |
| 98 | + traits=4.6.0 \ |
| 99 | + && sync && conda clean -tipsy && sync \ |
| 100 | + && /bin/bash -c "source activate neuro \ |
| 101 | + && pip install -q --no-cache-dir -e /src/nipype[all]" \ |
| 102 | + && sync |
| 103 | + |
| 104 | +LABEL org.label-schema.build-date="$BUILD_DATE" \ |
105 | 105 | org.label-schema.name="NIPYPE" \
|
106 | 106 | org.label-schema.description="NIPYPE - Neuroimaging in Python: Pipelines and Interfaces" \
|
107 | 107 | org.label-schema.url="http://nipype.readthedocs.io" \
|
108 |
| - org.label-schema.vcs-ref=$VCS_REF \ |
| 108 | + org.label-schema.vcs-ref="$VCS_REF" \ |
109 | 109 | org.label-schema.vcs-url="https://github.com/nipy/nipype" \
|
110 |
| - org.label-schema.version=$VERSION \ |
| 110 | + org.label-schema.version="$VERSION" \ |
111 | 111 | org.label-schema.schema-version="1.0"
|
| 112 | + |
| 113 | +#-------------------------------------- |
| 114 | +# Save container specifications to JSON |
| 115 | +#-------------------------------------- |
| 116 | +RUN echo '{ \ |
| 117 | + \n "pkg_manager": "apt", \ |
| 118 | + \n "check_urls": false, \ |
| 119 | + \n "instructions": [ \ |
| 120 | + \n [ \ |
| 121 | + \n "base", \ |
| 122 | + \n "kaczmarj/nipype:base" \ |
| 123 | + \n ], \ |
| 124 | + \n [ \ |
| 125 | + \n "label", \ |
| 126 | + \n { \ |
| 127 | + \n "maintainer": "The nipype developers https://github.com/nipy/nipype" \ |
| 128 | + \n } \ |
| 129 | + \n ], \ |
| 130 | + \n [ \ |
| 131 | + \n "env", \ |
| 132 | + \n { \ |
| 133 | + \n "MKL_NUM_THREADS": "1", \ |
| 134 | + \n "OMP_NUM_THREADS": "1" \ |
| 135 | + \n } \ |
| 136 | + \n ], \ |
| 137 | + \n [ \ |
| 138 | + \n "user", \ |
| 139 | + \n "neuro" \ |
| 140 | + \n ], \ |
| 141 | + \n [ \ |
| 142 | + \n "miniconda", \ |
| 143 | + \n { \ |
| 144 | + \n "env_name": "neuro", \ |
| 145 | + \n "add_to_path": true \ |
| 146 | + \n } \ |
| 147 | + \n ], \ |
| 148 | + \n [ \ |
| 149 | + \n "copy", \ |
| 150 | + \n [ \ |
| 151 | + \n "docker/files/run_builddocs.sh", \ |
| 152 | + \n "docker/files/run_examples.sh", \ |
| 153 | + \n "docker/files/run_pytests.sh", \ |
| 154 | + \n "nipype/external/fsl_imglob.py", \ |
| 155 | + \n "/usr/bin/" \ |
| 156 | + \n ] \ |
| 157 | + \n ], \ |
| 158 | + \n [ \ |
| 159 | + \n "copy", \ |
| 160 | + \n [ \ |
| 161 | + \n ".", \ |
| 162 | + \n "/src/nipype" \ |
| 163 | + \n ] \ |
| 164 | + \n ], \ |
| 165 | + \n [ \ |
| 166 | + \n "user", \ |
| 167 | + \n "root" \ |
| 168 | + \n ], \ |
| 169 | + \n [ \ |
| 170 | + \n "run", \ |
| 171 | + \n "chmod 777 -R /src/nipype" \ |
| 172 | + \n ], \ |
| 173 | + \n [ \ |
| 174 | + \n "user", \ |
| 175 | + \n "neuro" \ |
| 176 | + \n ], \ |
| 177 | + \n [ \ |
| 178 | + \n "arg", \ |
| 179 | + \n { \ |
| 180 | + \n "PYTHON_VERSION_MAJOR": "3", \ |
| 181 | + \n "PYTHON_VERSION_MINOR": "6", \ |
| 182 | + \n "BUILD_DATE": "", \ |
| 183 | + \n "VCS_REF": "", \ |
| 184 | + \n "VERSION": "" \ |
| 185 | + \n } \ |
| 186 | + \n ], \ |
| 187 | + \n [ \ |
| 188 | + \n "miniconda", \ |
| 189 | + \n { \ |
| 190 | + \n "env_name": "neuro", \ |
| 191 | + \n "conda_install": "python=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} icu=58.1 libxml2 libxslt matplotlib mkl numpy pandas psutil scikit-learn scipy traits=4.6.0", \ |
| 192 | + \n "pip_opts": "-e", \ |
| 193 | + \n "pip_install": "/src/nipype[all]" \ |
| 194 | + \n } \ |
| 195 | + \n ], \ |
| 196 | + \n [ \ |
| 197 | + \n "label", \ |
| 198 | + \n { \ |
| 199 | + \n "org.label-schema.build-date": "$BUILD_DATE", \ |
| 200 | + \n "org.label-schema.name": "NIPYPE", \ |
| 201 | + \n "org.label-schema.description": "NIPYPE - Neuroimaging in Python: Pipelines and Interfaces", \ |
| 202 | + \n "org.label-schema.url": "http://nipype.readthedocs.io", \ |
| 203 | + \n "org.label-schema.vcs-ref": "$VCS_REF", \ |
| 204 | + \n "org.label-schema.vcs-url": "https://github.com/nipy/nipype", \ |
| 205 | + \n "org.label-schema.version": "$VERSION", \ |
| 206 | + \n "org.label-schema.schema-version": "1.0" \ |
| 207 | + \n } \ |
| 208 | + \n ] \ |
| 209 | + \n ], \ |
| 210 | + \n "generation_timestamp": "2017-10-02 22:55:57", \ |
| 211 | + \n "neurodocker_version": "0.3.1-2-g4dfcf56" \ |
| 212 | + \n}' > /neurodocker/neurodocker_specs.json |
0 commit comments