46 lines
1.8 KiB
Docker
Executable file
46 lines
1.8 KiB
Docker
Executable file
# Define base image. Set HOME to avoid Matplotlib warning about non-writable
|
|
# MPLCONFIGDIR on Neurite import when running as non-root user.
|
|
FROM tensorflow/tensorflow:2.17.0-gpu AS base
|
|
ENV FREESURFER_HOME=/freesurfer
|
|
ENV PYTHONUSERBASE="$FREESURFER_HOME/env"
|
|
ENV PATH="$FREESURFER_HOME:$PATH"
|
|
ENV HOME=/tmp
|
|
|
|
|
|
# Intermediate build stage. Install Python packages to user base for easy COPY.
|
|
FROM base AS copy
|
|
|
|
COPY --chmod=0775 mri_synthmorph $FREESURFER_HOME/
|
|
COPY --chmod=0664 synthmorph/*.py $FREESURFER_HOME/synthmorph/
|
|
COPY --chmod=0664 synthmorph.*.h5 $FREESURFER_HOME/models/
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends git
|
|
RUN python3 -m pip install -U pip
|
|
RUN python3 -m pip install --user \
|
|
'numpy<2.0' \
|
|
git+https://github.com/adalca/pystrum.git@ba35d4b357f54e5ed577cbd413076a07ef810a21 \
|
|
git+https://github.com/adalca/neurite.git@9ae2f5cec2201eedbcc6929cecf852193cef7646 \
|
|
git+https://github.com/freesurfer/surfa.git@041905fca717447780e0cc211197669e3218de2f \
|
|
git+https://github.com/voxelmorph/voxelmorph.git@53d1b95fa734648c92fd8af4f3807b09cb56c342
|
|
|
|
WORKDIR /artifacts
|
|
RUN python3 -V >python.txt
|
|
RUN python3 -m pip freeze >requirements.txt
|
|
RUN mri_synthmorph -h >help.general.txt
|
|
RUN mri_synthmorph register -h >help.register.txt
|
|
RUN mri_synthmorph apply -h >help.apply.txt
|
|
|
|
|
|
# Export Python requirements for reference. Build artifacts will only exist in
|
|
# in the target stage `export`.
|
|
FROM scratch AS export
|
|
COPY --from=copy /artifacts/*.txt /
|
|
|
|
|
|
# Exclude Git and caches from final image to save space. Copy only once to
|
|
# avoid unnecessary container layers. Set working directory to /mnt for data
|
|
# exchange with the host without having to specify the full path.
|
|
FROM base
|
|
COPY --from=copy $FREESURFER_HOME $FREESURFER_HOME
|
|
WORKDIR /mnt
|
|
ENTRYPOINT ["mri_synthmorph"]
|