我想在我的容器上执行 exec 并执行我的命令:
apptainer exec myContainer.sif myCommand
(或奇点)
但是 myCommand 在 conda/mamba 环境中,所以我正在做:
apptainer exec myContainer.sif bash -c 'source /opt/mamba/etc/profile.d/mamba.sh; source activate mambaEnvironment; myCommand'
这效果很好。我尝试在定义文件的部分设置曼巴环境激活,如下所示:
%environment
PATH=$PATH:/bbmap/:/opt/mamba/bin/
. /opt/mamba/etc/profile.d/mamba.sh
mamba activate blee
但它似乎没有做任何事情。我基本上想对其进行设置,以便每次执行 apptainer exec (或奇异性 exec)时,它都会加载到适当的 mamba/conda 环境(这样我就可以作为 nextflow 管道的一部分轻松运行它)。我该怎么做?
以下是食谱示例:
Bootstrap: docker
From: ubuntu:20.04
%post
apt-get -y update
apt-get -y upgrade
DEBIAN_FRONTEND=noninteractive
apt-get -y install default-jre
apt-get -y --no-install-recommends install wget git zlib1g-dev curl openssh-client tar gzip ca-certificates build-essential cmake
#Install Mamba
readonly mamba_installer="Mambaforge-$(uname)-$(uname -m).sh"
readonly mamba_version="4.10.3-4"
readonly mamba_prefix="/opt/mamba"
wget "https://github.com/conda-forge/miniforge/releases/download/${mamba_version}/${mamba_installer}"
bash "${mamba_installer}" -b -p "${mamba_prefix}"
rm "${mamba_installer}"
export PATH="/opt/mamba/bin:$PATH"
PATH=$PATH:/bbmap/
mamba config --add channels defaults
mamba config --add channels conda-forge
mamba config --add channels bioconda
mamba create -y -n blee python=3.6 pip
mamba init
. /opt/mamba/etc/profile.d/mamba.sh
. activate blee
mamba install -n blee -c bioconda nanocomp porechop
%environment
PATH=$PATH:/bbmap/:/opt/mamba/bin/
. /opt/mamba/etc/profile.d/mamba.sh
mamba activate blee
%runscript
exec "$@"
据我所知,conda/mamba 环境仅在交互式登录时激活,即使您将激活放入
.bashrc
文件中。
如果将 env bin 添加到
PATH
它通常可以工作,但可能需要将更多路径添加到脚本中。像ENV PATH /opt/mamba/env/blee/bin:$PATH
之类的东西。如果您使用可执行脚本,还请记住更新 shebang。