使用 docker 容器在 AWS 中运行的 Nextflow 进程无法在 $PATH 中找到程序,尽管程序在那里

问题描述 投票:0回答:1

我正在 AWS 上运行一个 nextflow 管道,它执行一系列进程,每个进程都有自己的 docker。该管道在本地运行良好,但当我在 AWS 上运行它时,我收到一个奇怪的

command not found
错误。

免责声明:docker 容器已正确推送到 AWS 注册表中的正确存储库,并在运行管道时被 AWS 工作人员找到。

这是完整的命令:

#!/bin/bash -ue
export SENTIEON_LICENSE=xxx.x.xxx.xx &&    # masking it for obvious reasons 
bwa mem -M -R "@RG\tID:23456789929800\tSM:23456789929800\tPL:ILLUMINA" -t 32 /mnt/buckets/reference/hg19/ucsc.hg19.mod.mit.fasta test_R1.fastq.gz test_R2.fastq.gz > 23456789929800.sam &&
sentieon util sort -o 23456789929800_sorted.bam -t 32 --sam2bam -i 23456789929800.sam &&
samtools index 23456789929800_sorted.bam

我收到此错误:

.command.sh: line 5: samtools: command not found

当我运行执行进程的 docker 容器时:

docker run --rm -it --privileged <name:version>

我检查了

samtools
可执行文件是否存在,它确实存在:

root@a387481f5957:/task# which samtools 
/usr/local/bin/samtools

我尝试指定完整路径。我尝试声明一个变量。我尝试了一切,但就是找不到它。

我尝试运行一个微型实例,拉取 docker 映像,然后以交互方式运行容器,我确实在 $PATH 中找到了

samtools

可能会发生什么?有人可以帮助我吗?

amazon-web-services docker path environment nextflow
1个回答
0
投票

我正在为未来的读者发布我自己问题的答案:

在 AWS 文档中的某些段落中指定必须通过 conda 安装某些工具才能在路径中识别。事实证明 samtools 就是其中之一。

安装 conda 后,它现在就像魅力一样。

© www.soinside.com 2019 - 2024. All rights reserved.