forked from CoBrALab/RABIES
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
190 lines (164 loc) · 6.82 KB
/
Dockerfile
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
### initial setup from https://github.com/BIC-MNI/build_packages/blob/master/build_ubuntu_18.04_x64/Dockerfile
FROM ubuntu:bionic
# install basic system packages
RUN apt-get -y update && \
apt-get -y dist-upgrade && \
apt-get install -y --no-install-recommends \
sudo \
build-essential g++ gfortran bc \
bison flex \
libx11-dev x11proto-core-dev \
libxi6 libxi-dev \
libxmu6 libxmu-dev libxmu-headers \
libgl1-mesa-dev libglu1-mesa-dev \
libjpeg-dev \
libssl-dev ccache libapt-inst2.0 git lsb-release \
curl ca-certificates && \
apt-get autoclean && \
rm -rf /var/lib/apt/lists/*
# add user to build all tools
RUN useradd -ms /bin/bash rabies && \
echo "rabies ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/rabies && \
chmod 0440 /etc/sudoers.d/rabies
ENV PATH=/usr/lib/ccache:$PATH
# add new cmake
RUN mkdir src && \
cd src && \
curl -L --output cmake-3.14.5.tar.gz https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz && \
tar zxf cmake-3.14.5.tar.gz && \
cd cmake-3.14.5 && \
./configure --prefix=/usr --no-qt-gui && \
make && \
make install && \
cd ../../ && \
rm -rf src
WORKDIR /home/rabies
ENV HOME="/home/rabies"
### install ANTs/AFNI softwares
RUN apt-get update -qq \
&& sudo apt-get install -y -q --no-install-recommends \
gcc \
g++ \
graphviz \
tree \
git \
vim \
emacs-nox \
nano \
less \
ncdu \
tig \
git-annex-remote-rclone \
netbase \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Installing ANTs 2.3.1 based on neurodocker
ENV ANTSPATH="$HOME/ants-v2.3.1/bin" \
PATH="$HOME/ants-v2.3.1/bin:$PATH" \
LD_LIBRARY_PATH="$HOME/ants-v2.3.1/lib:$LD_LIBRARY_PATH"
RUN apt-get update -qq \
&& apt-get install -y -q --no-install-recommends \
cmake \
g++ \
gcc \
git \
make \
zlib1g-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /tmp/ants/build \
&& git clone https://github.com/ANTsX/ANTs.git /tmp/ants/source \
&& cd /tmp/ants/source \
&& git fetch --tags \
&& git checkout v2.3.1 \
&& cd /tmp/ants/build \
&& cmake -DBUILD_SHARED_LIBS=ON /tmp/ants/source \
&& make -j1 \
&& mkdir -p $HOME/ants-v2.3.1 \
&& mv bin lib $HOME/ants-v2.3.1/ \
&& mv /tmp/ants/source/Scripts/* $HOME/ants-v2.3.1/bin \
&& rm -rf /tmp/ants
# install AFNI latest
RUN wget afni.nimh.nih.gov/pub/dist/tgz/linux_ubuntu_16_64.tgz \
&& mkdir $HOME/afni \
&& tar -xzf linux_ubuntu_16_64.tgz -C $HOME/afni \
&& rm -rf linux_ubuntu_16_64.tgz
ENV AFNIPATH="$HOME/afni/linux_ubuntu_16_64/" \
PATH="$HOME/afni/linux_ubuntu_16_64:$PATH"
RUN apt-get update && \
apt-get install -y --no-install-recommends htop nano wget imagemagick parallel zram-config debconf
#Build tools and dependencies
RUN echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && \
apt install -y --no-install-recommends build-essential gdebi-core \
git imagemagick libssl-dev cmake autotools-dev automake \
ed zlib1g-dev libxml2-dev libxslt-dev openjdk-8-jre \
zenity libcurl4-openssl-dev bc gawk libxkbcommon-x11-0 \
ttf-mscorefonts-installer bc
# install FSL
RUN sudo apt-get update && \
sudo apt-get install -y --no-install-recommends gnupg gnupg2 gnupg1
RUN git clone https://github.com/poldracklab/mriqc.git && \
mv mriqc/docker/files/neurodebian.gpg $HOME && \
rm -rf mriqc
RUN curl -sSL "http://neuro.debian.net/lists/$( lsb_release -c | cut -f2 ).us-ca.full" >> /etc/apt/sources.list.d/neurodebian.sources.list && \
sudo apt-key add $HOME/neurodebian.gpg && \
(apt-key adv --refresh-keys --keyserver hkp://ha.pool.sks-keyservers.net 0xA5D32F012649A5A9 || true)
RUN sudo ln -fs /usr/share/zoneinfo/America/Montreal /etc/localtime && \
sudo apt-get install -y --no-install-recommends tzdata && \
sudo dpkg-reconfigure -f noninteractive tzdata && \
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends fsl-core && \
sudo apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Configure FSL environment
ENV FSLDIR="/usr/share/fsl/5.0/"
ENV FSL_DIR="${FSLDIR}" \
FSLOUTPUTTYPE=NIFTI_GZ \
PATH="/usr/share/fsl/5.0/bin:$PATH" \
LD_LIBRARY_PATH=/usr/lib/fsl/5.0:$LD_LIBRARY_PATH
# Install minc-toolkit
RUN curl -L --output $HOME/minc-toolkit-1.9.18.deb http://packages.bic.mni.mcgill.ca/minc-toolkit/Debian/minc-toolkit-1.9.18-20200813-Ubuntu_18.04-x86_64.deb && \
sudo dpkg -i $HOME/minc-toolkit-1.9.18.deb
# minc-toolkit configuration parameters for 1.9.18-20200813
ENV MINC_TOOLKIT=/opt/minc/1.9.18 \
MINC_TOOLKIT_VERSION="1.9.18-20200813"
ENV PATH=${MINC_TOOLKIT}/bin:${MINC_TOOLKIT}/pipeline:${PATH} \
PERL5LIB=${MINC_TOOLKIT}/perl:${MINC_TOOLKIT}/pipeline${PERL5LIB:+:$PERL5LIB} \
LD_LIBRARY_PATH=${MINC_TOOLKIT}/lib:${MINC_TOOLKIT}/lib/InsightToolkit${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \
MNI_DATAPATH=${MINC_TOOLKIT}/../share:${MINC_TOOLKIT}/share \
MINC_FORCE_V2=1 \
MINC_COMPRESS=4 \
VOLUME_CACHE_THRESHOLD=-1 \
MANPATH=${MINC_TOOLKIT}/man${MANPATH:+:$MANPATH} \
# integrated ANTs tools
ANTSPATH=${MINC_TOOLKIT}/bin
# Install python environment
ENV CONDA_DIR="$HOME/miniconda-latest" \
PATH="$HOME/miniconda-latest/bin:$PATH" \
ND_ENTRYPOINT="$HOME/startup.sh"
RUN export PATH="$HOME/miniconda-latest/bin:$PATH" \
&& echo "Downloading Miniconda installer ..." \
&& conda_installer="/tmp/miniconda.sh" \
&& curl -fsSL --retry 5 -o "$conda_installer" https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh \
&& bash "$conda_installer" -b -p $HOME/miniconda-latest \
&& rm -f "$conda_installer" \
&& conda update -yq -nbase conda
#### install RABIES
ENV RABIES_VERSION=0.2.1-dev
ENV RABIES=$HOME/RABIES-${RABIES_VERSION}
ENV PYTHONPATH="${PYTHONPATH}:$RABIES" \
PATH=${PATH}:${RABIES}/minc-toolkit-extras:${RABIES}/twolevel_ants_dbm:${RABIES}/rabies/shell_scripts
# download code and create conda environment
RUN mkdir -p temp && \
#curl -L --retry 5 -o temp/RABIES.tar.gz https://github.com/CoBrALab/RABIES/archive/${RABIES_VERSION}.tar.gz && \
#cd temp && \
#tar zxf RABIES.tar.gz && \
#cd .. && \
#conda env create -f temp/RABIES-${RABIES_VERSION}/rabies_environment.yml && \
#bash temp/RABIES-${RABIES_VERSION}/install.sh && \
rm -r temp && \
git clone https://github.com/CoBrALab/RABIES && \
mv RABIES $RABIES && \
conda env create -f $RABIES/rabies_environment.yml && \
conda run -n rabies /bin/bash $RABIES/install.sh
WORKDIR /tmp/
ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "rabies", "python", "/home/rabies/RABIES-0.2.1-dev/bin/rabies"]