Neurodocker
I built a few test Docker images to check out Neurodocker, and here’s a quick rundown of what I found:
- Neurodocker images are much smaller than full installations of the packages. This I believe is their major selling point, packaging repronim’d builds to make slimmer images.
- Neurodocker uses Dropbox to store source code. I don’t know why I find that so unsavory, but I do.
- Versions appear to be nominal; when I build ANTs 2.3.4 from source, the version is
2.3.4.dev170-g11953
. The one Neurodocker installs is2.3.3.dev168-g29bdf
. The minimal FS is v6, but v7 is available in full.v7 is now also available in minimal form.
Can use a script like
#!/bin/bash
FROM=neurodebian:bionic-non-free
PKG=apt
# versions
AFNI=latest
ANTS=2.3.4
C3D=1.0.0
FREESURFER=7.1.1-min
FSL=5.0.11
ARGS="-b $FROM -p $PKG \
--convert3d version=$C3D install_path=/opt/c3d \
--afni version=$AFNI install_path=/opt/afni \
--fsl version=$FSL install_path=/usr/lib/fsl/${FSL::3} \
--ants version=$ANTS method=source install_path=/usr/lib/ants \
--freesurfer version=$FREESURFER \
"
docker run --rm repronim/neurodocker:master generate docker $ARGS > neurodocker.Dockerfile $ARGS
docker run --rm repronim/neurodocker:master generate singularity $ARGS > neurodocker.Singularity $ARGS
to generate a Dockerfile and Singularity recipe like
# Generated by: Neurodocker version 0.7.0+25.gf104933.dirty
# Latest release: Neurodocker version 0.7.0
#
# Thank you for using Neurodocker. If you discover any issues
# or ways to improve this software, please submit an issue or
# pull request on our GitHub repository:
#
# https://github.com/ReproNim/neurodocker
#
# Timestamp: 2020/12/08 17:40:39 UTC
FROM neurodebian:bionic-non-free
USER root
ARG DEBIAN_FRONTEND="noninteractive"
ENV LANG="en_US.UTF-8" \
LC_ALL="en_US.UTF-8" \
ND_ENTRYPOINT="/neurodocker/startup.sh"
RUN export ND_ENTRYPOINT="/neurodocker/startup.sh" \
&& apt-get update -qq \
&& apt-get install -y -q --no-install-recommends \
apt-utils \
bzip2 \
ca-certificates \
curl \
locales \
unzip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
&& dpkg-reconfigure --frontend=noninteractive locales \
&& update-locale LANG="en_US.UTF-8" \
&& chmod 777 /opt && chmod a+s /opt \
&& mkdir -p /neurodocker \
&& if [ ! -f "$ND_ENTRYPOINT" ]; then \
echo '#!/usr/bin/env bash' >> "$ND_ENTRYPOINT" \
&& echo 'set -e' >> "$ND_ENTRYPOINT" \
&& echo 'export USER="${USER:=`whoami`}"' >> "$ND_ENTRYPOINT" \
&& echo 'if [ -n "$1" ]; then "$@"; else /usr/bin/env bash; fi' >> "$ND_ENTRYPOINT"; \
fi \
&& chmod -R 777 /neurodocker && chmod a+s /neurodocker
ENTRYPOINT ["/neurodocker/startup.sh"]
ENV C3DPATH="/opt/c3d" \
PATH="/opt/c3d/bin:$PATH"
RUN echo "Downloading Convert3D ..." \
&& mkdir -p /opt/c3d \
&& curl -fsSL --retry 5 https://sourceforge.net/projects/c3d/files/c3d/1.0.0/c3d-1.0.0-Linux-x86_64.tar.gz/download \
| tar -xz -C /opt/c3d --strip-components 1
ENV PATH="/opt/afni:$PATH" \
AFNI_PLUGINPATH="/opt/afni"
RUN apt-get update -qq \
&& apt-get install -y -q --no-install-recommends \
ed \
gsl-bin \
libglib2.0-0 \
libglu1-mesa-dev \
libglw1-mesa \
libgomp1 \
libjpeg62 \
libxm4 \
multiarch-support \
netpbm \
tcsh \
xfonts-base \
xvfb \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& curl -sSL --retry 5 -o /tmp/toinstall.deb http://mirrors.kernel.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb \
&& dpkg -i /tmp/toinstall.deb \
&& rm /tmp/toinstall.deb \
&& curl -sSL --retry 5 -o /tmp/toinstall.deb http://snapshot.debian.org/archive/debian-security/20160113T213056Z/pool/updates/main/libp/libpng/libpng12-0_1.2.49-1%2Bdeb7u2_amd64.deb \
&& dpkg -i /tmp/toinstall.deb \
&& rm /tmp/toinstall.deb \
&& apt-get install -f \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& gsl2_path="$(find / -name 'libgsl.so.19' || printf '')" \
&& if [ -n "$gsl2_path" ]; then \
ln -sfv "$gsl2_path" "$(dirname $gsl2_path)/libgsl.so.0"; \
fi \
&& ldconfig \
&& echo "Downloading AFNI ..." \
&& mkdir -p /opt/afni \
&& curl -fsSL --retry 5 https://afni.nimh.nih.gov/pub/dist/tgz/linux_openmp_64.tgz \
| tar -xz -C /opt/afni --strip-components 1
ENV FSLDIR="/usr/lib/fsl/5.0" \
PATH="/usr/lib/fsl/5.0/bin:$PATH" \
FSLOUTPUTTYPE="NIFTI_GZ" \
FSLMULTIFILEQUIT="TRUE" \
FSLTCLSH="/usr/lib/fsl/5.0/bin/fsltclsh" \
FSLWISH="/usr/lib/fsl/5.0/bin/fslwish" \
FSLLOCKDIR="" \
FSLMACHINELIST="" \
FSLREMOTECALL="" \
FSLGECUDAQ="cuda.q"
RUN apt-get update -qq \
&& apt-get install -y -q --no-install-recommends \
bc \
dc \
file \
libfontconfig1 \
libfreetype6 \
libgl1-mesa-dev \
libgl1-mesa-dri \
libglu1-mesa-dev \
libgomp1 \
libice6 \
libxcursor1 \
libxft2 \
libxinerama1 \
libxrandr2 \
libxrender1 \
libxt6 \
sudo \
wget \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& echo "Downloading FSL ..." \
&& mkdir -p /usr/lib/fsl/5.0 \
&& curl -fsSL --retry 5 https://fsl.fmrib.ox.ac.uk/fsldownloads/fsl-5.0.11-centos6_64.tar.gz \
| tar -xz -C /usr/lib/fsl/5.0 --strip-components 1 \
&& sed -i '$iecho Some packages in this Docker container are non-free' $ND_ENTRYPOINT \
&& sed -i '$iecho If you are considering commercial use of this container, please consult the relevant license:' $ND_ENTRYPOINT \
&& sed -i '$iecho https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Licence' $ND_ENTRYPOINT \
&& sed -i '$isource $FSLDIR/etc/fslconf/fsl.sh' $ND_ENTRYPOINT \
&& echo "Installing FSL conda environment ..." \
&& bash /usr/lib/fsl/5.0/etc/fslconf/fslpython_install.sh -f /usr/lib/fsl/5.0
ENV ANTSPATH="/usr/lib/ants/bin" \
PATH="/usr/lib/ants/bin:$PATH" \
LD_LIBRARY_PATH="/usr/lib/ants/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 2.3.4 \
&& cd /tmp/ants/build \
&& cmake -DBUILD_SHARED_LIBS=ON /tmp/ants/source \
&& make -j1 \
&& mkdir -p /usr/lib/ants \
&& mv bin lib /usr/lib/ants/ \
&& mv /tmp/ants/source/Scripts/* /usr/lib/ants/bin \
&& rm -rf /tmp/ants
ENV FREESURFER_HOME="/opt/freesurfer-7.1.1-min" \
PATH="/opt/freesurfer-7.1.1-min/bin:$PATH"
RUN apt-get update -qq \
&& apt-get install -y -q --no-install-recommends \
bc \
libgomp1 \
libxmu6 \
libxt6 \
perl \
tcsh \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& echo "Downloading FreeSurfer ..." \
&& mkdir -p /opt/freesurfer-7.1.1-min \
&& curl -fsSL --retry 5 https://dl.dropbox.com/s/c3earkfhhvdyuo4/freesurfer-7.1.1-min.tgz \
| tar -xz -C /opt/freesurfer-7.1.1-min --strip-components 1 \
&& sed -i '$isource "/opt/freesurfer-7.1.1-min/SetUpFreeSurfer.sh"' "$ND_ENTRYPOINT"
ENV C3DPATH="/opt/c3d" \
PATH="/opt/c3d/bin:$PATH"
RUN echo "Downloading Convert3D ..." \
&& mkdir -p /opt/c3d \
&& curl -fsSL --retry 5 https://sourceforge.net/projects/c3d/files/c3d/1.0.0/c3d-1.0.0-Linux-x86_64.tar.gz/download \
| tar -xz -C /opt/c3d --strip-components 1
ENV PATH="/opt/afni:$PATH" \
AFNI_PLUGINPATH="/opt/afni"
RUN apt-get update -qq \
&& apt-get install -y -q --no-install-recommends \
ed \
gsl-bin \
libglib2.0-0 \
libglu1-mesa-dev \
libglw1-mesa \
libgomp1 \
libjpeg62 \
libxm4 \
multiarch-support \
netpbm \
tcsh \
xfonts-base \
xvfb \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& curl -sSL --retry 5 -o /tmp/toinstall.deb http://mirrors.kernel.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb \
&& dpkg -i /tmp/toinstall.deb \
&& rm /tmp/toinstall.deb \
&& curl -sSL --retry 5 -o /tmp/toinstall.deb http://snapshot.debian.org/archive/debian-security/20160113T213056Z/pool/updates/main/libp/libpng/libpng12-0_1.2.49-1%2Bdeb7u2_amd64.deb \
&& dpkg -i /tmp/toinstall.deb \
&& rm /tmp/toinstall.deb \
&& apt-get install -f \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& gsl2_path="$(find / -name 'libgsl.so.19' || printf '')" \
&& if [ -n "$gsl2_path" ]; then \
ln -sfv "$gsl2_path" "$(dirname $gsl2_path)/libgsl.so.0"; \
fi \
&& ldconfig \
&& echo "Downloading AFNI ..." \
&& mkdir -p /opt/afni \
&& curl -fsSL --retry 5 https://afni.nimh.nih.gov/pub/dist/tgz/linux_openmp_64.tgz \
| tar -xz -C /opt/afni --strip-components 1
ENV FSLDIR="/usr/lib/fsl/5.0" \
PATH="/usr/lib/fsl/5.0/bin:$PATH" \
FSLOUTPUTTYPE="NIFTI_GZ" \
FSLMULTIFILEQUIT="TRUE" \
FSLTCLSH="/usr/lib/fsl/5.0/bin/fsltclsh" \
FSLWISH="/usr/lib/fsl/5.0/bin/fslwish" \
FSLLOCKDIR="" \
FSLMACHINELIST="" \
FSLREMOTECALL="" \
FSLGECUDAQ="cuda.q"
RUN apt-get update -qq \
&& apt-get install -y -q --no-install-recommends \
bc \
dc \
file \
libfontconfig1 \
libfreetype6 \
libgl1-mesa-dev \
libgl1-mesa-dri \
libglu1-mesa-dev \
libgomp1 \
libice6 \
libxcursor1 \
libxft2 \
libxinerama1 \
libxrandr2 \
libxrender1 \
libxt6 \
sudo \
wget \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& echo "Downloading FSL ..." \
&& mkdir -p /usr/lib/fsl/5.0 \
&& curl -fsSL --retry 5 https://fsl.fmrib.ox.ac.uk/fsldownloads/fsl-5.0.11-centos6_64.tar.gz \
| tar -xz -C /usr/lib/fsl/5.0 --strip-components 1 \
&& sed -i '$iecho Some packages in this Docker container are non-free' $ND_ENTRYPOINT \
&& sed -i '$iecho If you are considering commercial use of this container, please consult the relevant license:' $ND_ENTRYPOINT \
&& sed -i '$iecho https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Licence' $ND_ENTRYPOINT \
&& sed -i '$isource $FSLDIR/etc/fslconf/fsl.sh' $ND_ENTRYPOINT \
&& echo "Installing FSL conda environment ..." \
&& bash /usr/lib/fsl/5.0/etc/fslconf/fslpython_install.sh -f /usr/lib/fsl/5.0
ENV ANTSPATH="/usr/lib/ants/bin" \
PATH="/usr/lib/ants/bin:$PATH" \
LD_LIBRARY_PATH="/usr/lib/ants/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 2.3.4 \
&& cd /tmp/ants/build \
&& cmake -DBUILD_SHARED_LIBS=ON /tmp/ants/source \
&& make -j1 \
&& mkdir -p /usr/lib/ants \
&& mv bin lib /usr/lib/ants/ \
&& mv /tmp/ants/source/Scripts/* /usr/lib/ants/bin \
&& rm -rf /tmp/ants
ENV FREESURFER_HOME="/opt/freesurfer-7.1.1-min" \
PATH="/opt/freesurfer-7.1.1-min/bin:$PATH"
RUN apt-get update -qq \
&& apt-get install -y -q --no-install-recommends \
bc \
libgomp1 \
libxmu6 \
libxt6 \
perl \
tcsh \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& echo "Downloading FreeSurfer ..." \
&& mkdir -p /opt/freesurfer-7.1.1-min \
&& curl -fsSL --retry 5 https://dl.dropbox.com/s/c3earkfhhvdyuo4/freesurfer-7.1.1-min.tgz \
| tar -xz -C /opt/freesurfer-7.1.1-min --strip-components 1 \
&& sed -i '$isource "/opt/freesurfer-7.1.1-min/SetUpFreeSurfer.sh"' "$ND_ENTRYPOINT"
RUN echo '{ \
\n "pkg_manager": "apt", \
\n "instructions": [ \
\n [ \
\n "base", \
\n "neurodebian:bionic-non-free" \
\n ], \
\n [ \
\n "convert3d", \
\n { \
\n "version": "1.0.0", \
\n "install_path": "/opt/c3d" \
\n } \
\n ], \
\n [ \
\n "afni", \
\n { \
\n "version": "latest", \
\n "install_path": "/opt/afni" \
\n } \
\n ], \
\n [ \
\n "fsl", \
\n { \
\n "version": "5.0.11", \
\n "install_path": "/usr/lib/fsl/5.0" \
\n } \
\n ], \
\n [ \
\n "ants", \
\n { \
\n "version": "2.3.4", \
\n "method": "source", \
\n "install_path": "/usr/lib/ants" \
\n } \
\n ], \
\n [ \
\n "freesurfer", \
\n { \
\n "version": "7.1.1-min" \
\n } \
\n ], \
\n [ \
\n "convert3d", \
\n { \
\n "version": "1.0.0", \
\n "install_path": "/opt/c3d" \
\n } \
\n ], \
\n [ \
\n "afni", \
\n { \
\n "version": "latest", \
\n "install_path": "/opt/afni" \
\n } \
\n ], \
\n [ \
\n "fsl", \
\n { \
\n "version": "5.0.11", \
\n "install_path": "/usr/lib/fsl/5.0" \
\n } \
\n ], \
\n [ \
\n "ants", \
\n { \
\n "version": "2.3.4", \
\n "method": "source", \
\n "install_path": "/usr/lib/ants" \
\n } \
\n ], \
\n [ \
\n "freesurfer", \
\n { \
\n "version": "7.1.1-min" \
\n } \
\n ] \
\n ] \
\n}' > /neurodocker/neurodocker_specs.json
# Generated by: Neurodocker version 0.7.0+25.gf104933.dirty
# Latest release: Neurodocker version 0.7.0
#
# Thank you for using Neurodocker. If you discover any issues
# or ways to improve this software, please submit an issue or
# pull request on our GitHub repository:
#
# https://github.com/ReproNim/neurodocker
#
# Timestamp: 2020/12/08 17:40:52 UTC
Bootstrap: docker
From: neurodebian:bionic-non-free
%post
su - root
export ND_ENTRYPOINT="/neurodocker/startup.sh"
apt-get update -qq
apt-get install -y -q --no-install-recommends \
apt-utils \
bzip2 \
ca-certificates \
curl \
locales \
unzip
apt-get clean
rm -rf /var/lib/apt/lists/*
sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
dpkg-reconfigure --frontend=noninteractive locales
update-locale LANG="en_US.UTF-8"
chmod 777 /opt && chmod a+s /opt
mkdir -p /neurodocker
if [ ! -f "$ND_ENTRYPOINT" ]; then
echo '#!/usr/bin/env bash' >> "$ND_ENTRYPOINT"
echo 'set -e' >> "$ND_ENTRYPOINT"
echo 'export USER="${USER:=`whoami`}"' >> "$ND_ENTRYPOINT"
echo 'if [ -n "$1" ]; then "$@"; else /usr/bin/env bash; fi' >> "$ND_ENTRYPOINT";
fi
chmod -R 777 /neurodocker && chmod a+s /neurodocker
echo "Downloading Convert3D ..."
mkdir -p /opt/c3d
curl -fsSL --retry 5 https://sourceforge.net/projects/c3d/files/c3d/1.0.0/c3d-1.0.0-Linux-x86_64.tar.gz/download \
| tar -xz -C /opt/c3d --strip-components 1
apt-get update -qq
apt-get install -y -q --no-install-recommends \
ed \
gsl-bin \
libglib2.0-0 \
libglu1-mesa-dev \
libglw1-mesa \
libgomp1 \
libjpeg62 \
libxm4 \
multiarch-support \
netpbm \
tcsh \
xfonts-base \
xvfb
apt-get clean
rm -rf /var/lib/apt/lists/*
curl -sSL --retry 5 -o /tmp/toinstall.deb http://mirrors.kernel.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb
dpkg -i /tmp/toinstall.deb
rm /tmp/toinstall.deb
curl -sSL --retry 5 -o /tmp/toinstall.deb http://snapshot.debian.org/archive/debian-security/20160113T213056Z/pool/updates/main/libp/libpng/libpng12-0_1.2.49-1%2Bdeb7u2_amd64.deb
dpkg -i /tmp/toinstall.deb
rm /tmp/toinstall.deb
apt-get install -f
apt-get clean
rm -rf /var/lib/apt/lists/*
gsl2_path="$(find / -name 'libgsl.so.19' || printf '')"
if [ -n "$gsl2_path" ]; then
ln -sfv "$gsl2_path" "$(dirname $gsl2_path)/libgsl.so.0";
fi
ldconfig
echo "Downloading AFNI ..."
mkdir -p /opt/afni
curl -fsSL --retry 5 https://afni.nimh.nih.gov/pub/dist/tgz/linux_openmp_64.tgz \
| tar -xz -C /opt/afni --strip-components 1
apt-get update -qq
apt-get install -y -q --no-install-recommends \
bc \
dc \
file \
libfontconfig1 \
libfreetype6 \
libgl1-mesa-dev \
libgl1-mesa-dri \
libglu1-mesa-dev \
libgomp1 \
libice6 \
libxcursor1 \
libxft2 \
libxinerama1 \
libxrandr2 \
libxrender1 \
libxt6 \
sudo \
wget
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "Downloading FSL ..."
mkdir -p /usr/lib/fsl/5.0
curl -fsSL --retry 5 https://fsl.fmrib.ox.ac.uk/fsldownloads/fsl-5.0.11-centos6_64.tar.gz \
| tar -xz -C /usr/lib/fsl/5.0 --strip-components 1
sed -i '$iecho Some packages in this Docker container are non-free' $ND_ENTRYPOINT
sed -i '$iecho If you are considering commercial use of this container, please consult the relevant license:' $ND_ENTRYPOINT
sed -i '$iecho https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Licence' $ND_ENTRYPOINT
sed -i '$isource $FSLDIR/etc/fslconf/fsl.sh' $ND_ENTRYPOINT
echo "Installing FSL conda environment ..."
bash /usr/lib/fsl/5.0/etc/fslconf/fslpython_install.sh -f /usr/lib/fsl/5.0
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 2.3.4
cd /tmp/ants/build
cmake -DBUILD_SHARED_LIBS=ON /tmp/ants/source
make -j1
mkdir -p /usr/lib/ants
mv bin lib /usr/lib/ants/
mv /tmp/ants/source/Scripts/* /usr/lib/ants/bin
rm -rf /tmp/ants
apt-get update -qq
apt-get install -y -q --no-install-recommends \
bc \
libgomp1 \
libxmu6 \
libxt6 \
perl \
tcsh
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "Downloading FreeSurfer ..."
mkdir -p /opt/freesurfer-7.1.1-min
curl -fsSL --retry 5 https://dl.dropbox.com/s/c3earkfhhvdyuo4/freesurfer-7.1.1-min.tgz \
| tar -xz -C /opt/freesurfer-7.1.1-min --strip-components 1
sed -i '$isource "/opt/freesurfer-7.1.1-min/SetUpFreeSurfer.sh"' "$ND_ENTRYPOINT"
echo "Downloading Convert3D ..."
mkdir -p /opt/c3d
curl -fsSL --retry 5 https://sourceforge.net/projects/c3d/files/c3d/1.0.0/c3d-1.0.0-Linux-x86_64.tar.gz/download \
| tar -xz -C /opt/c3d --strip-components 1
apt-get update -qq
apt-get install -y -q --no-install-recommends \
ed \
gsl-bin \
libglib2.0-0 \
libglu1-mesa-dev \
libglw1-mesa \
libgomp1 \
libjpeg62 \
libxm4 \
multiarch-support \
netpbm \
tcsh \
xfonts-base \
xvfb
apt-get clean
rm -rf /var/lib/apt/lists/*
curl -sSL --retry 5 -o /tmp/toinstall.deb http://mirrors.kernel.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb
dpkg -i /tmp/toinstall.deb
rm /tmp/toinstall.deb
curl -sSL --retry 5 -o /tmp/toinstall.deb http://snapshot.debian.org/archive/debian-security/20160113T213056Z/pool/updates/main/libp/libpng/libpng12-0_1.2.49-1%2Bdeb7u2_amd64.deb
dpkg -i /tmp/toinstall.deb
rm /tmp/toinstall.deb
apt-get install -f
apt-get clean
rm -rf /var/lib/apt/lists/*
gsl2_path="$(find / -name 'libgsl.so.19' || printf '')"
if [ -n "$gsl2_path" ]; then
ln -sfv "$gsl2_path" "$(dirname $gsl2_path)/libgsl.so.0";
fi
ldconfig
echo "Downloading AFNI ..."
mkdir -p /opt/afni
curl -fsSL --retry 5 https://afni.nimh.nih.gov/pub/dist/tgz/linux_openmp_64.tgz \
| tar -xz -C /opt/afni --strip-components 1
apt-get update -qq
apt-get install -y -q --no-install-recommends \
bc \
dc \
file \
libfontconfig1 \
libfreetype6 \
libgl1-mesa-dev \
libgl1-mesa-dri \
libglu1-mesa-dev \
libgomp1 \
libice6 \
libxcursor1 \
libxft2 \
libxinerama1 \
libxrandr2 \
libxrender1 \
libxt6 \
sudo \
wget
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "Downloading FSL ..."
mkdir -p /usr/lib/fsl/5.0
curl -fsSL --retry 5 https://fsl.fmrib.ox.ac.uk/fsldownloads/fsl-5.0.11-centos6_64.tar.gz \
| tar -xz -C /usr/lib/fsl/5.0 --strip-components 1
sed -i '$iecho Some packages in this Docker container are non-free' $ND_ENTRYPOINT
sed -i '$iecho If you are considering commercial use of this container, please consult the relevant license:' $ND_ENTRYPOINT
sed -i '$iecho https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Licence' $ND_ENTRYPOINT
sed -i '$isource $FSLDIR/etc/fslconf/fsl.sh' $ND_ENTRYPOINT
echo "Installing FSL conda environment ..."
bash /usr/lib/fsl/5.0/etc/fslconf/fslpython_install.sh -f /usr/lib/fsl/5.0
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 2.3.4
cd /tmp/ants/build
cmake -DBUILD_SHARED_LIBS=ON /tmp/ants/source
make -j1
mkdir -p /usr/lib/ants
mv bin lib /usr/lib/ants/
mv /tmp/ants/source/Scripts/* /usr/lib/ants/bin
rm -rf /tmp/ants
apt-get update -qq
apt-get install -y -q --no-install-recommends \
bc \
libgomp1 \
libxmu6 \
libxt6 \
perl \
tcsh
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "Downloading FreeSurfer ..."
mkdir -p /opt/freesurfer-7.1.1-min
curl -fsSL --retry 5 https://dl.dropbox.com/s/c3earkfhhvdyuo4/freesurfer-7.1.1-min.tgz \
| tar -xz -C /opt/freesurfer-7.1.1-min --strip-components 1
sed -i '$isource "/opt/freesurfer-7.1.1-min/SetUpFreeSurfer.sh"' "$ND_ENTRYPOINT"
echo '{
\n "pkg_manager": "apt",
\n "instructions": [
\n [
\n "base",
\n "neurodebian:bionic-non-free"
\n ],
\n [
\n "user",
\n "root"
\n ],
\n [
\n "_header",
\n {
\n "version": "generic",
\n "method": "custom"
\n }
\n ],
\n [
\n "convert3d",
\n {
\n "version": "1.0.0",
\n "install_path": "/opt/c3d"
\n }
\n ],
\n [
\n "afni",
\n {
\n "version": "latest",
\n "install_path": "/opt/afni"
\n }
\n ],
\n [
\n "fsl",
\n {
\n "version": "5.0.11",
\n "install_path": "/usr/lib/fsl/5.0"
\n }
\n ],
\n [
\n "ants",
\n {
\n "version": "2.3.4",
\n "method": "source",
\n "install_path": "/usr/lib/ants"
\n }
\n ],
\n [
\n "freesurfer",
\n {
\n "version": "7.1.1-min"
\n }
\n ],
\n [
\n "convert3d",
\n {
\n "version": "1.0.0",
\n "install_path": "/opt/c3d"
\n }
\n ],
\n [
\n "afni",
\n {
\n "version": "latest",
\n "install_path": "/opt/afni"
\n }
\n ],
\n [
\n "fsl",
\n {
\n "version": "5.0.11",
\n "install_path": "/usr/lib/fsl/5.0"
\n }
\n ],
\n [
\n "ants",
\n {
\n "version": "2.3.4",
\n "method": "source",
\n "install_path": "/usr/lib/ants"
\n }
\n ],
\n [
\n "freesurfer",
\n {
\n "version": "7.1.1-min"
\n }
\n ]
\n ]
\n}' > /neurodocker/neurodocker_specs.json
%environment
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export ND_ENTRYPOINT="/neurodocker/startup.sh"
export C3DPATH="/opt/c3d"
export PATH="/opt/c3d/bin:$PATH"
export PATH="/opt/afni:$PATH"
export AFNI_PLUGINPATH="/opt/afni"
export FSLDIR="/usr/lib/fsl/5.0"
export PATH="/usr/lib/fsl/5.0/bin:$PATH"
export FSLOUTPUTTYPE="NIFTI_GZ"
export FSLMULTIFILEQUIT="TRUE"
export FSLTCLSH="/usr/lib/fsl/5.0/bin/fsltclsh"
export FSLWISH="/usr/lib/fsl/5.0/bin/fslwish"
export FSLLOCKDIR=""
export FSLMACHINELIST=""
export FSLREMOTECALL=""
export FSLGECUDAQ="cuda.q"
export ANTSPATH="/usr/lib/ants/bin"
export PATH="/usr/lib/ants/bin:$PATH"
export LD_LIBRARY_PATH="/usr/lib/ants/lib:$LD_LIBRARY_PATH"
export FREESURFER_HOME="/opt/freesurfer-7.1.1-min"
export PATH="/opt/freesurfer-7.1.1-min/bin:$PATH"
export C3DPATH="/opt/c3d"
export PATH="/opt/c3d/bin:$PATH"
export PATH="/opt/afni:$PATH"
export AFNI_PLUGINPATH="/opt/afni"
export FSLDIR="/usr/lib/fsl/5.0"
export PATH="/usr/lib/fsl/5.0/bin:$PATH"
export FSLOUTPUTTYPE="NIFTI_GZ"
export FSLMULTIFILEQUIT="TRUE"
export FSLTCLSH="/usr/lib/fsl/5.0/bin/fsltclsh"
export FSLWISH="/usr/lib/fsl/5.0/bin/fslwish"
export FSLLOCKDIR=""
export FSLMACHINELIST=""
export FSLREMOTECALL=""
export FSLGECUDAQ="cuda.q"
export ANTSPATH="/usr/lib/ants/bin"
export PATH="/usr/lib/ants/bin:$PATH"
export LD_LIBRARY_PATH="/usr/lib/ants/lib:$LD_LIBRARY_PATH"
export FREESURFER_HOME="/opt/freesurfer-7.1.1-min"
export PATH="/opt/freesurfer-7.1.1-min/bin:$PATH"
%runscript
/neurodocker/startup.sh "$@"