Создание контейнера сингулярности с помощью 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. Обычно это не требуется, если вам не нужно обрабатывать аргументы командной строки.

Другие вопросы по тегам