Как использовать функцию с первой стадии во второй этап в Docker Multist -Build?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Как использовать функцию с первой стадии во второй этап в Docker Multist -Build?

Сообщение Anonymous »

Я пытаюсь создать изображение Docker, которое предварительно обрабатывает файлы MRI. Для этого требуется несколько шагов: урезание МРТ, создание масок для МРТ и т. Д. Каждая из этих функций поступает из разных пакетов (разные изображения докеров), поэтому мой изображение Docker-это просто обертка, которая использует каждую из этих функций итеративно, чтобы клиницисты могли использовать его в Docker Desktop без использования линии кода (просто вставленные файлы MRI, только что входные файлы, только что входные файлы, и все это вводные файлы, только что вводные файлы, и все это вводные файлы, только что входные файлы, и все это вводные файлы, только что вводные файлы, и все это вводные файлы, только что вводные файлы, и все это вводные файлы, только что-то входные файлы, и на полном входных файлах, только что настолько приготовленные в Enterory. в качестве ввода и вывода в Docker Desktop). < /p>
Я не уверен, как перенести функцию с первого этапа ко второму этапу. Я понимаю общую идею мультистальной сборки 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 из изображения Docker FreeSurfer/Synthstrip, а реальная вторая функция, которую я пытаюсь использовать,-это fslmaths из Vistalab/FSL-V5.0 Docker 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»