Skip to content

Commit f92a333

Browse files
authored
Merge pull request #2024 from oesteban/docker/install-fs-min
[Docker] Install minimized version of FS6
2 parents 4e48d26 + d32be0b commit f92a333

File tree

2 files changed

+40
-41
lines changed

2 files changed

+40
-41
lines changed

circle.yml

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,35 @@ dependencies:
2727
- mkdir -p $WORKDIR && sudo setfacl -d -m group:ubuntu:rwx $WORKDIR && sudo setfacl -m group:ubuntu:rwx $WORKDIR
2828
- mkdir -p $HOME/docker $HOME/examples $WORKDIR/tests $WORKDIR/logs $WORKDIR/crashfiles ${CIRCLE_TEST_REPORTS}/tests/
2929
- if [[ ! -e "$HOME/bin/codecov" ]]; then mkdir -p $HOME/bin; curl -so $HOME/bin/codecov https://codecov.io/bash && chmod 755 $HOME/bin/codecov; fi
30-
override:
31-
- if [[ -e "$HOME/docker/cache.tar" ]]; then docker load --input $HOME/docker/cache.tar; fi :
30+
- docker load --input $HOME/docker/cache.tar || true :
3231
timeout: 6000
33-
- docker images
34-
- docker pull nipype/base:latest
32+
override:
33+
# Get data
3534
- if [[ ! -d ~/examples/nipype-tutorial ]]; then wget --retry-connrefused --waitretry=5 --read-timeout=20 --timeout=15 -t 0 -q -O nipype-tutorial.tar.bz2 "${DATA_NIPYPE_TUTORIAL_URL}" && tar xjf nipype-tutorial.tar.bz2 -C ~/examples/; fi
3635
- if [[ ! -d ~/examples/nipype-fsl_course_data ]]; then wget --retry-connrefused --waitretry=5 --read-timeout=20 --timeout=15 -t 0 -q -O nipype-fsl_course_data.tar.gz "${DATA_NIPYPE_FSL_COURSE}" && tar xzf nipype-fsl_course_data.tar.gz -C ~/examples/; fi
3736
- if [[ ! -d ~/examples/feeds ]]; then wget --retry-connrefused --waitretry=5 --read-timeout=20 --timeout=15 -t 0 -q -O fsl-5.0.9-feeds.tar.gz "${DATA_NIPYPE_FSL_FEEDS}" && tar xzf fsl-5.0.9-feeds.tar.gz -C ~/examples/; fi
3837
- if [ "$CIRCLE_TAG" != "" ]; then sed -i -E "s/(__version__ = )'[A-Za-z0-9.-]+'/\1'$CIRCLE_TAG'/" nipype/info.py; fi
39-
# - e=1 && for i in {1..5}; do docker build -f docker/base.Dockerfile --rm=false -t nipype/base:latest . && e=0 && break || sleep 15; done && [ "$e" -eq "0" ] :
40-
# timeout: 21600
41-
- e=1 && for i in {1..5}; do docker build --rm=false -t nipype/nipype:latest -t nipype/nipype:py36 --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg VERSION=$CIRCLE_TAG . && e=0 && break || sleep 15; done && [ "$e" -eq "0" ] :
38+
# Docker
39+
- docker images
40+
- ? |
41+
e=1 && for i in {1..5}; do
42+
docker build --rm=false -f docker/base.Dockerfile -t nipype/base:latest . && e=0 && break || sleep 15;
43+
done && [ "$e" -eq "0" ]
44+
:
45+
timeout: 21600
46+
- ? |
47+
e=1 && for i in {1..5}; do
48+
docker build --rm=false -t nipype/nipype:latest -t nipype/nipype:py36 --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg VERSION=$CIRCLE_TAG . && e=0 && break || sleep 15;
49+
done && [ "$e" -eq "0" ]
50+
:
4251
timeout: 6000
43-
- e=1 && for i in {1..5}; do docker build --rm=false -t nipype/nipype:py27 --build-arg PYTHON_VERSION_MAJOR=2 --build-arg PYTHON_VERSION_MINOR=7 --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg VERSION=$CIRCLE_TAG-py27 . && e=0 && break || sleep 15; done && [ "$e" -eq "0" ] :
52+
- ? |
53+
e=1 && for i in {1..5}; do
54+
docker build --rm=false -t nipype/nipype:py27 --build-arg PYTHON_VERSION_MAJOR=2 --build-arg PYTHON_VERSION_MINOR=7 --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg VERSION=$CIRCLE_TAG-py27 . && e=0 && break || sleep 15;
55+
done && [ "$e" -eq "0" ]
56+
:
4457
timeout: 6000
45-
- docker save -o $HOME/docker/cache.tar nipype/base:latest nipype/nipype:py36 nipype/nipype:py27 :
58+
- docker save -o $HOME/docker/cache.tar ubuntu:xenial-20161213 nipype/base:latest nipype/nipype:py36 nipype/nipype:py27 :
4659
timeout: 6000
4760

4861
test:

docker/base.Dockerfile

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -44,39 +44,25 @@ RUN apt-get update && \
4444

4545
WORKDIR /opt
4646
# Installing freesurfer -- do it first so that it is cached early
47-
RUN curl -sSL https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0/freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.0.tar.gz | tar zxv -C /opt \
48-
--exclude='freesurfer/trctrain' \
49-
--exclude='freesurfer/subjects/fsaverage_sym' \
50-
--exclude='freesurfer/subjects/fsaverage3' \
51-
--exclude='freesurfer/subjects/fsaverage4' \
52-
--exclude='freesurfer/subjects/fsaverage5' \
53-
--exclude='freesurfer/subjects/fsaverage6' \
54-
--exclude='freesurfer/subjects/cvs_avg35' \
55-
--exclude='freesurfer/subjects/cvs_avg35_inMNI152' \
56-
--exclude='freesurfer/subjects/bert' \
57-
--exclude='freesurfer/subjects/V1_average' \
58-
--exclude='freesurfer/average/mult-comp-cor' \
59-
--exclude='freesurfer/lib/cuda' \
60-
--exclude='freesurfer/lib/qt'
61-
62-
ENV FSL_DIR=/usr/share/fsl/5.0 \
47+
#-----------------------------------------------------------------------------
48+
# 3. Install FreeSurfer v6.0 (minimized with reprozip):
49+
# https://github.com/freesurfer/freesurfer/issues/70
50+
#-----------------------------------------------------------------------------
51+
RUN curl -sSL https://dl.dropbox.com/s/pbaisn6m5qpi9uu/recon-all-freesurfer6-2.min.tgz?dl=0 | tar zx -C /opt
52+
ENV FS_OVERRIDE=0 \
6353
OS=Linux \
64-
FS_OVERRIDE=0 \
65-
FIX_VERTEX_AREA= \
6654
FSF_OUTPUT_FORMAT=nii.gz \
55+
FIX_VERTEX_AREA=\
6756
FREESURFER_HOME=/opt/freesurfer
68-
ENV SUBJECTS_DIR=$FREESURFER_HOME/subjects \
69-
FUNCTIONALS_DIR=$FREESURFER_HOME/sessions \
70-
MNI_DIR=$FREESURFER_HOME/mni \
71-
LOCAL_DIR=$FREESURFER_HOME/local \
72-
FSFAST_HOME=$FREESURFER_HOME/fsfast \
73-
MINC_BIN_DIR=$FREESURFER_HOME/mni/bin \
74-
MINC_LIB_DIR=$FREESURFER_HOME/mni/lib \
75-
MNI_DATAPATH=$FREESURFER_HOME/mni/data \
76-
FMRI_ANALYSIS_DIR=$FREESURFER_HOME/fsfast
77-
ENV PERL5LIB=$MINC_LIB_DIR/perl5/5.8.5 \
78-
MNI_PERL5LIB=$MINC_LIB_DIR/perl5/5.8.5 \
79-
PATH=$FREESURFER_HOME/bin:$FSFAST_HOME/bin:$FREESURFER_HOME/tktools:$MINC_BIN_DIR:$PATH
57+
ENV MNI_DIR=$FREESURFER_HOME/mni \
58+
SUBJECTS_DIR=$FREESURFER_HOME/subjects
59+
ENV PERL5LIB=$MNI_DIR/share/perl5 \
60+
MNI_PERL5LIB=$MNI_DIR/share/perl5 \
61+
MINC_BIN_DIR=$MNI_DIR/bin \
62+
MINC_LIB_DIR=$MNI_DIR/lib \
63+
MNI_DATAPATH=$MNI_DIR/data
64+
ENV PATH=$FREESURFER_HOME/bin:$FREESURFER_HOME/tktools:$MINC_BIN_DIR:$PATH
65+
ENV FSL_DIR=/usr/share/fsl/5.0
8066
RUN echo "cHJpbnRmICJrcnp5c3p0b2YuZ29yZ29sZXdza2lAZ21haWwuY29tXG41MTcyXG4gKkN2dW12RVYzelRmZ1xuRlM1Si8yYzFhZ2c0RVxuIiA+IC9vcHQvZnJlZXN1cmZlci9saWNlbnNlLnR4dAo=" | base64 -d | sh
8167

8268
# Enable neurodebian
@@ -122,8 +108,8 @@ ENV FSLDIR=/usr/share/fsl/5.0 \
122108

123109
# Installing and setting up ANTs
124110
RUN mkdir -p /opt/ants && \
125-
curl -sSL "https://github.com/stnava/ANTs/releases/download/v2.1.0/Linux_Ubuntu14.04.tar.bz2" \
126-
| tar -xjC /opt/ants --strip-components 1
111+
curl -sSL "https://dl.dropbox.com/s/2f4sui1z6lcgyek/ANTs-Linux-centos5_x86_64-v2.2.0-0740f91.tar.gz?dl=0" \
112+
| tar -zx -C /opt
127113

128114
ENV ANTSPATH=/opt/ants \
129115
PATH=$ANTSPATH:$PATH

0 commit comments

Comments
 (0)