-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDockerfile
233 lines (189 loc) · 10.6 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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# Creates docker container that runs HCP Pipeline algorithms
#
#
# Use Ubuntu 14.04 LTS
FROM ubuntu:trusty-20170817
MAINTAINER Flywheel <[email protected]>
# Install packages
RUN apt-get update \
&& apt-get install -y \
lsb-core \
bsdtar \
zip \
unzip \
gzip \
curl \
jq \
python-pip
#############################################
# Download and install R and necessary packages
#From https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FIX/UserGuide
#R version >=3.3.0
#'kernlab' version 0.9.24
#'ROCR' version 1.0.7
#'class' version 7.3.14
#'party' version 1.0.25
#'e1071' version 1.6.7
#'randomForest' version 4.6.12
#
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 && \
echo "deb http://cran.rstudio.com/bin/linux/ubuntu trusty/" >> /etc/apt/sources.list.d/cran-rstudio.list && \
apt-get update && \
apt-get install -y --force-yes --no-install-recommends r-base-core r-base-dev && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
# ORDER OF INSTALLATION IS IMPORTANT
RUN echo "r <- getOption('repos'); r['CRAN'] <- 'http://cran.us.r-project.org'; options(repos = r);" > ~/.Rprofile
########## 'kernlab' version 0.9.24
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/kernlab/kernlab_0.9-24.tar.gz", repos=NULL, type="source")' \
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/devtools/devtools_2.3.0.tar.gz", repos=NULL, type="source")'
############ 'ROCR' version 1.0.7
RUN Rscript -e 'install.packages("bitops", dependencies=TRUE)'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/caTools/caTools_1.17.1.4.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("gplots", dependencies=TRUE)'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/ROCR/ROCR_1.0-7.tar.gz", repos=NULL, type="source")'
########### #'class' version 7.3.14
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/class/class_7.3-14.tar.gz", repos=NULL, type="source")'
######### #'party' version 1.0.25
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/mvtnorm/mvtnorm_1.0-2.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/survival/survival_2.37-7.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/mvtnorm/mvtnorm_1.0-7.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/survival/survival_2.37-7.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/Matrix/Matrix_1.2-18.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/Rcpp/Rcpp_1.0.7.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/RcppEigen/RcppEigen_0.3.3.9.1.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/nloptr/nloptr_1.0.4.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/nlme/nlme_3.1-147.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/boot/boot_1.3-25.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("minqa", dependencies=TRUE)'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/lme4/lme4_1.1-27.1.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/mratios/mratios_1.4.0.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/TH.data/TH.data_1.0-10.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/zoo/zoo_1.8-8.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/sandwich/sandwich_3.0-0.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/multcomp/multcomp_1.3-8.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/modeltools/modeltools_0.2-21.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/coin/coin_1.1-0.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/strucchange/strucchange_1.5-1.tar.gz", repos=NULL, type="source")'
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/party/party_1.0-25.tar.gz", repos=NULL, type="source")'
###### 'e1071' version 1.6.7
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/e1071/e1071_1.6-7.tar.gz", repos=NULL, type="source")'
########## 'randomForest' version 4.6.12
RUN Rscript -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/randomForest/randomForest_4.6-12.tar.gz", repos=NULL, type="source")'
#
#############################################
# Download and install FSL ICA-FIX
RUN apt-get -y update && \
apt-get install -y wget && \
wget -nv http://www.fmrib.ox.ac.uk/~steve/ftp/fix1.066.tar.gz -O /fix.tar.gz && \
mkdir -p /tmp/fix && \
cd /tmp/fix && \
tar zxvf /fix.tar.gz --exclude="compiled/" --exclude="MCRInstaller.zip" && \
mv /tmp/fix/fix* /opt/fix && \
rm /fix.tar.gz && \
cd / && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
ENV FSL_FIXDIR=/opt/fix
# Download and install Matlab Compiler Runtime v8.5 (2015a)
# Install the MCR dependencies and some things we'll need and download the MCR
# from Mathworks -silently install it
# See http://www.mathworks.com/products/compiler/mcr/ for more info.
# Adapted from https://github.com/flywheel-apps/matlab-mcr
RUN apt-get -qq update && apt-get -qq install -y \
unzip \
xorg \
wget \
curl && \
mkdir /mcr-install && \
mkdir /opt/mcr && \
cd /mcr-install && \
wget -nv http://www.mathworks.com/supportfiles/downloads/R2015a/deployment_files/R2015a/installers/glnxa64/MCR_R2015a_glnxa64_installer.zip && \
cd /mcr-install && \
unzip -q MCR_R2015a_glnxa64_installer.zip && \
./install -destinationFolder /opt/mcr -agreeToLicense yes -mode silent && \
cd / && \
rm -rf mcr-install
#ENV LD_LIBRARY_PATH /opt/mcr/v85/runtime/glnxa64:/opt/mcr/v85/bin/glnxa64:/opt/mcr/v85/sys/os/glnxa64 #skip this
ENV XAPPLRESDIR /opt/mcr/v85/X11/app-defaults
#############################################
# Download and install FSL 5.0.9
#Build-time key retrieval is sometimes unable to connect to keyserver. Instead, download the public key manually and store it in plaintext
#within repo. You should run these commands occassionally to make sure the saved public key is up to date:
#gpg --keyserver hkp://pgp.mit.edu:80 --recv 0xA5D32F012649A5A9 && \
#gpg --export --armor 0xA5D32F012649A5A9 > neurodebian_pgpkey.txt && \
#gpg --batch --yes --delete-keys 0xA5D32F012649A5A9
COPY neurodebian_pgpkey.txt /tmp/
RUN apt-get update && \
apt-get install -y --no-install-recommends curl && \
echo "deb http://neurodeb.pirsquared.org data main contrib non-free" > /etc/apt/sources.list.d/neurodebian.sources.list && \
echo "#deb-src http://neurodeb.pirsquared.org data main contrib non-free" >> /etc/apt/sources.list.d/neurodebian.sources.list && \
echo "deb http://neurodeb.pirsquared.org trusty main contrib non-free" >> /etc/apt/sources.list.d/neurodebian.sources.list && \
echo "#deb-src http://neurodeb.pirsquared.org trusty main contrib non-free" >> /etc/apt/sources.list.d/neurodebian.sources.list && \
apt-key add /tmp/neurodebian_pgpkey.txt && \
apt-get update && \
apt-get install -y dc && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
## Install FSL 5.0.10
WORKDIR /opt/
#RUN wget https://fsl.fmrib.ox.ac.uk/fsldownloads/fslinstaller.py && \
# chmod +x fslinstaller.py && \
# python3 fslinstaller.py --manifest https://fsl.fmrib.ox.ac.uk/fsldownloads/manifest.json -d /usr/local/fsl -V 5.0.10
ENV INSTALL_FOLDER=/usr/local/fsl
RUN mkdir -p $INSTALL_FOLDER
RUN curl -sSL https://fsl.fmrib.ox.ac.uk/fsldownloads/fsl-5.0.10-centos7_64.tar.gz | tar xz -C ${INSTALL_FOLDER} \
--exclude='fsl/doc' \
--exclude='fsl/data/first' \
--exclude='fsl/data/atlases' \
--exclude='fsl/src' \
--exclude='fsl/extras/src' \
--exclude='fsl/bin/fslview*' \
--exclude='fsl/bin/FSLeyes' \
--exclude='fsl/bin/*_gpu*' \
--exclude='fsl/bin/*_cuda*'
# Configure FSL environment
ENV FSLDIR=/usr/local/fsl
ENV FSL_DIR="${FSLDIR}"
ENV FSLOUTPUTTYPE=NIFTI_GZ
ENV PATH=/usr/local/fsl/bin:$PATH
ENV FSLMULTIFILEQUIT=TRUE
ENV POSSUMDIR=/usr/local/fsl/
ENV LD_LIBRARY_PATH=/usr/local/fsl/lib:$LD_LIBRARY_PATH
ENV FSLTCLSH=/usr/bin/tclsh
ENV FSLWISH=/usr/bin/wish
ENV FSLOUTPUTTYPE=NIFTI_GZ
#############################################
# Download and install Connectome Workbench
RUN apt-get update && apt-get -y install connectome-workbench=1.2.3-1~nd14.04+1
ENV CARET7DIR=/usr/bin
#############################################
# Download and install HCP Pipelines
#latest v3.x = v3.22.0
#latest v4.x = v4.0.0-alpha.5
#Need to use this 2017-08-24 commit to fix bugs in v4.0.0-alpha.5: 90b0766636ba83f06c9198206cc7fa90117b0b11
RUN apt-get -y update && \
apt-get install -y wget && \
apt-get install -y --no-install-recommends python-numpy && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
WORKDIR /opt/
RUN wget -nv https://github.com/Washington-University/Pipelines/archive/90b0766636ba83f06c9198206cc7fa90117b0b11.tar.gz -O pipelines.tar.gz && \
tar zxvf pipelines.tar.gz && \
rm pipelines.tar.gz && \
mv /opt/*ipelines* /opt/HCP-Pipelines
ENV HCPPIPEDIR=/opt/HCP-Pipelines
# Manual patche for hcp_fix, re-compiled PostFix and RSS, etc.
COPY pipeline_patch/ ${HCPPIPEDIR}/
# Manual patch for settings.sh and re-compiled FIX
COPY fix_patch/ ${FSL_FIXDIR}/
#############################################
# Make directory for flywheel spec (v0)
ENV FLYWHEEL /flywheel/v0
WORKDIR ${FLYWHEEL}
# Copy executable/manifest to Gear
COPY run ${FLYWHEEL}/run
COPY manifest.json ${FLYWHEEL}/manifest.json
# Copy additional scripts and scenes
COPY scripts/*.sh scripts/*.bat ${FLYWHEEL}/scripts/
# ENV preservation for Flywheel Engine
RUN env -u HOSTNAME -u PWD | \
awk -F = '{ print "export " $1 "=\"" $2 "\"" }' > ${FLYWHEEL}/docker-env.sh
# Configure entrypoint
ENTRYPOINT ["/flywheel/v0/run"]