Создание контейнера сингулярности с помощью nextflow
Я пытаюсь создать контейнер сингулярности с установленным nextflow. После сборки я устанавливаю его в каталог, и он устанавливается как ROOT. Когда я пытаюсь запустить контейнер, он терпит неудачу, поскольку я не являюсь пользователем root. Я просмотрел лучшие практики, и там говорится следующее:
Всегда устанавливайте пакеты, программы, данные и файлы в места операционной системы (например, не в /home, /tmp или любые другие каталоги, которые могут быть обычно привязаны).
Мой файл def:
BootStrap: yum
OSVersion: 7
MirrorURL: http://mirror.centos.org/centos-%{OSVERSION}/%{OSVERSION}/os/$basearch/
Include: yum
%post
yum -y install java-1.8.0-openjdk-headless
yum -y install wget
yum -y install which
mkdir /s2fast
cd /s2fast
wget -qO- https://get.nextflow.io | bash
%runscript
exec /s2fast/nextflow
Запущенный он дает мне 'Permission Denied' Я запускаю singularity 3.4.0-1
Не уверены, стоит ли мне использовать пути привязки, наложения или что-то еще?
1 ответ
Если вашему контейнеру нужен только Nextflow, могу ли я предложить использовать биоконтейнер Nextflow от quay.io?
singularity pull docker://quay.io/biocontainers/nextflow:19.07.0--hecc5488_0
Если вам нужно установить другие приложения вместе с Nextflow, обычно их устанавливают в /usr/local/bin
. Но нет ничего плохого в использовании пользовательских путей к каталогам, подобных тому, что вы делаете. В любом случае вам необходимо убедиться, что у этих приложений есть необходимые разрешения. Просто добавьchmod 755 /s2fast/nextflow
в раздел %post. Также удалите раздел %runscript. Обычно это не требуется, если вам не нужно обрабатывать аргументы командной строки.