Я не уверен, как перенести функцию с первого этапа ко второму этапу. Я понимаю общую идею мультистальной сборки Docker, но: < /p>
Я не знаю, какие каталоги и файлы для копирования с первого этапа до второго этапа для функции для работы (я не знаю, как выяснить, какие файлы и каталоги должны работать), и я не знаю, как вызовать функцию на первом этапе на втором этапе. /> Я попытался скопировать все файлы и каталоги с первого этапа на втором этапе и положить их в папку на втором этапе, но потом я не знаю, как назвать эту функцию на втором этапе.
Код: Выделить всё
#################################################FIRST IMAGE#################################################
# Pull first image from its docker hub
FROM itsdockerhub/firstimage AS base
#################################################FIRST IMAGE#################################################
#################################################SECOND IMAGE#################################################
# Import second image from its dockerhub
FROM itsdockerhub/secondimage
# Copy the iterative loop script (which is the entrypoint script I want to run)
COPY iterative_loop.sh .
# Create a new directory in the second image to save all files and directories from the first image
RUN mkdir ./allfilesandfoldersfromfirstimage
# Copy all the files and folders from first image
COPY --from=base . ./allfilesandfoldersfromfirstimage
#################################################FIRST IMAGE#################################################
# Call the iterative loop script
ENTRYPOINT ["./iterative_loop.sh"]
< /code>
итеративный SH сценарий с абстрактной идеей того, что я пытаюсь сделать: < /p>
#!/bin/bash
# Create directory to save the first changes to the MRIs
mkdir ./MRIs_first_modifications
#################################################WORK WITH FUNCTIONS FROM FIRST IMAGE#################################################
# Loop over the input MRI files and do the first changes using the function from the first image
for FILE in /input/*; do
namepart=$(basename "$FILE")
filename="${namepart%%.*}"
extension="${namepart#*.}"
modified_name="${filename}_skull_stripped.${extension}"
# Move into the folder with all files and folders from first image
cd ./allfilesandfoldersfromfirstimage
# Call the function from first image
functionfromfirstimage -i $FILE -o ./MRIs_first_modifications/$modified_name
# Return to the working directory of the second image
cd ..
done
cp ./MRIs_first_modifications/* /output
#################################################WORK WITH FUNCTIONS FROM FIRST IMAGE#################################################
#################################################WORK WITH FUNCTIONS FROM SECOND IMAGE#################################################
# Loop over the modified MRI files and do the next change with a function from the second image
for FILE in ./MRIs_first_modifications/*; do
namepart="$(basename "$FILE")"
filename="${namepart%%.*}"
extension="${namepart#*.}"
modified_name="${filename}_mask.${extension}"
functionfromsecondimage $FILE /output/$modified_name
done
#################################################WORK WITH FUNCTIONS FROM SECOND IMAGE#################################################
и теперь настоящий докерфил, который я пробовал
и теперь настоящий дорок, который я пробовал
и теперь настоящий дорок
Код: Выделить всё
#################################################SYNTHSTRIP#################################################
# Import synthstrip image from freesufer
FROM freesurfer/synthstrip AS skull_strip_with_synthstrip
#################################################SYNTHSTRIP#################################################
#################################################FSL#################################################
# Import fsl image from vistalab
FROM vistalab/fsl-v5.0
# Copy the iterative loop script
COPY iterative_loop.sh .
# Make sure that the iterative loop script is executable
RUN chmod ugo+rwx iterative_loop.sh
RUN mkdir ./oldsynthstrip
# Copy all the initial files from synthstrip
COPY --from=skull_strip_with_synthstrip . ./oldsynthstrip
#################################################FSL#################################################
# Call the iterative loop script
ENTRYPOINT ["./iterative_loop.sh"]
< /code>
и настоящий сценарий итеративный_лоп SH, который я попробовал < /p>
#!/bin/bash
#################################################SYNTHSTRIP#################################################
#################################################SYNTHSTRIP#################################################
# Create directory to save the skull-stripped MRIs
mkdir ./skull_stripped
# Loop over the input MRI files and skull-strip them with synthstrip
for FILE in /input/*; do
namepart=$(basename "$FILE")
if [[ $namepart == *".nii.gz"* ]] ; then
filename="${namepart%%.*}"
extension="${namepart#*.}"
modified_name="${filename}_skull_stripped.${extension}" ; else
filename="${namepart%.*}"
extension="${namepart##*.}"
modified_name="${filename}_skull_stripped.${extension}"
fi
echo
echo
echo
echo
echo -e "\033[1m....SKULL STRIPPING $namepart .... PLEASE BE PATIENT .... EACH MRI CAN TAKE A FEW MINUTES TO PROCESS ....\033[0m"
echo
echo
echo
echo
cd ./oldsynthstrip
mri_synthstrip -i $FILE -o ./skull_stripped/$modified_name
cd ..
done
cp ./skull_stripped/* /output
#################################################SYNTHSTRIP#################################################
#################################################SYNTHSTRIP#################################################
#################################################FSL#################################################
#################################################FSL#################################################
# Loop over the skull-stripped MRI files and create the masks with fsl
for FILE in ./skull_stripped/*; do
namepart="$(basename "$FILE")"
if [[ $namepart == *".nii.gz"* ]] ; then
filename="${namepart%%.*}"
extension="${namepart#*.}"
modified_name="${filename}_mask.${extension}" ; else
filename="${namepart%.*}"
extension="${namepart##*.}"
modified_name="${filename}_mask.${extension}"
fi
echo
echo
echo
echo
echo -e "\033[1m....CREATING MASK FOR $namepart .... EACH MRI SHOULD TAKE ONLY A FEW SECONDS TO PROCESS ....\033[0m"
echo
echo
echo
echo
fslmaths $FILE -abs -bin /output/$modified_name
done
#################################################FSL#################################################
#################################################FSL#################################################
./iterative_loop.sh: строка 33: ./oldsynthstrip/mri_synthstrip: нет такого файла или каталога
Я также изменил
cd ./oldsynthstrip
mri_synthstrip -i $FILE -o ./skull_stripped/$modified_name
cd ..
< /code>
to < /p>
./oldsynthstrip/mri_synthstrip -i $FILE -o ./skull_stripped/$modified_name
< /code>
, которая дает одну и ту же ошибку < /p>
Я думаю, мой вопрос: < /p>
Как копировать все файлы и папки с первого изображения, так что он работает на следующем изображении < /li>
Подробнее здесь: https://stackoverflow.com/questions/795 ... tistage-bu